<!doctype html>
<html lang="ru" data-bs-theme="dark">

<head>
    <!-- 2024-05-11 14:13:02 -->
        <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>Git - bundle uri</title>
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.3/css/bootstrap.min.css" integrity="sha512-jnSuA4Ss2PkkikSOLtYs8BlYIeeIK1h99ty4YfvRPAlzr377vr3CXDb7sb7eEEBYjDtcYj+AjBH3FLv5uSJuXg==" crossorigin="anonymous" referrerpolicy="no-referrer" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-icons/1.11.3/font/bootstrap-icons.min.css" integrity="sha512-dPXYcDub/aeb08c63jRq/k6GaKccl256JQy/AnOq7CAnEZ9FzSL9wSbcZkMp4R26vBsMLFYH4kQ67/bbV8XaCQ==" crossorigin="anonymous" referrerpolicy="no-referrer" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github-dark.min.css" integrity="sha512-rO+olRTkcf304DQBxSWxln8JXCzTHlKnIdnMUwYvQa9/Jd4cQaNkItIUj6Z4nvW1dqK0SKXLbn9h4KwZTNtAyw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/7.1.0/css/flag-icons.min.css" integrity="sha512-bZBu2H0+FGFz/stDN/L0k8J0G8qVsAL0ht1qg5kTwtAheiXwiRKyCq1frwfbSFSJN3jooR5kauE0YjtPzhZtJQ==" crossorigin="anonymous" referrerpolicy="no-referrer" />
    <link href="../../../runebook.css" rel="stylesheet" type="text/css">
    <meta name="x-github" content="https://github.com/runebookdev/runebook">
            <meta name="x-i18n-doc" content="git">
        <script>
        function i18n(element) {
            // NOP
        }
    </script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/js-cookie/3.0.5/js.cookie.js" integrity="sha512-F/dia2jKME12jwqiYDayeD+Rr/8jTWUD2wfbuJB0bzSwenSEnXsn4qQ/wVyXUCix5bmCAj8xJdtFr2OqUtjLAw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js" integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.3/js/bootstrap.bundle.min.js" integrity="sha512-7Pi/otdlbbCR+LnW+F7PwFcSDJOuUJB3OxtEHbg4vSMvzvJjde4Po1v4BR9Gdc9aXNUNFVUY+SK51wWT8WF0Gg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/7.8.1/rxjs.umd.min.js" integrity="sha512-D9LDs8YUUVa4V9Gl4Zb+xqRAc7RCzooR3+zzebgK2RMu/KU+dh90pbjEEMzPiSyRSGbSp9j1pZnrO4joGa5WEg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/mark.js/8.11.1/jquery.mark.min.js" integrity="sha512-mhbv5DqBMgrWL+32MmsDOt/OAvqr/cHimk6B8y/bx/xS88MVkYGPiVv2ixKVrkywF2qHplNRUvFsAHUdxZ3Krg==" crossorigin="anonymous"></script>
    <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-6424571640879890" crossorigin="anonymous"></script>    <script async src="https://www.googletagmanager.com/gtag/js?id=G-3G5BZ1QEDP"></script>
<script>
    window.dataLayer = window.dataLayer || [];

    function gtag() {
        dataLayer.push(arguments);
    }

    gtag('js', new Date());
    gtag('config', 'G-3G5BZ1QEDP');
</script>    <script>
(function(c, l, a, r, i, t, y) {
    c[a] = c[a] || function() {
        (c[a].q = c[a].q || []).push(arguments)
    };
    t = l.createElement(r);
    t.async = 1;
    t.src = "https://www.clarity.ms/tag/" + i + "?ref=bwt";
    y = l.getElementsByTagName(r)[0];
    y.parentNode.insertBefore(t, y);
})(window, document, "clarity", "script", "jto2hd94r9");
</script>    <script src="../../../theme.js"></script>
</head>

<body>
    <header class="bg-black">
        <div class="container">
            <div class="row">
                <div class="col">
                    <nav class="navbar navbar-expand-lg navbar-dark">
                        <a class="navbar-brand fw-bold" href="https://runebook.dev/ru">
                            <img alt="Runebook.dev" class="d-inline-block align-top mr-1" src="../../../assets/runebook_logo.webp" width="24" height="24">
                            Runebook.dev
                        </a>
                        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
                            <span class="navbar-toggler-icon"></span>
                        </button>
                        <div class="collapse navbar-collapse" id="navbarSupportedContent">
                            <ul class="navbar-nav me-auto mb-2 mb-lg-0">
                                <li class="nav-item">
                                    <a class="nav-link" href="https://runebook.dev/ru#docs">Documentation</a>
                                </li>
                                <li class="nav-item">
                                    <a class="nav-link" href="https://runebook.dev/contributors">Contributors</a>
                                </li>
                                <li class="nav-item">
                                    <a class="nav-link" href="https://github.com/runebookdev/runebook/issues">GitHub</a>
                                </li>
                            </ul>
                                                                                                <button class="btn btn-success ms-2" id="showPopupButton">
                                        <i class="bi bi-translate"></i>
                                        Show English
                                    </button>
                                                                                        <div class="form-check form-switch ms-3">
                                <label class="text-light">
                                    <input class="form-check-input" type="checkbox" role="switch" id="theme-switch" checked>
                                    <i class="bi bi-moon-stars-fill"></i>
                                </label>
                            </div>
                        </div>
                    </nav>
                </div>
            </div>
        </div>
    </header>

    <!--sse-->
    <div class="container">
    <div class="row">
        <div class="col">
            <nav aria-label="breadcrumb" class="mt-2">
                <ol class="breadcrumb mb-1">
                    <li class="breadcrumb-item">
                        <a href="https://runebook.dev/ru#docs">
                            <span class="fi fi-ru"></span>                            Русский                        </a>
                    </li>
                    <li class="breadcrumb-item">
                        <a href="-index-.html">
                            Git                            2.43                        </a>
                    </li>
                                            <li class="breadcrumb-item">
                            <a href="-index-.html#Miscellaneous">
                                Miscellaneous                            </a>
                        </li>
                                    </ol>
            </nav>
        </div>
    </div>
    <br>

    <div class="row">
        <div class="col-md-9">
            <main>
                <article>

                    
                    <h1 class="text-body-emphasis" ><span data-i18n="d231f5594011d0a2fe35ca43af2866f8b14205d8d9815b49606337657432f8ba/ad" data-source="bundle-uri" onmousemove="i18n(this)">bundle-uri</span></h1> <div> <p><span data-i18n="07b4a42ddbac8b0c532d43b7000b93ef7dbc0e7bdf7a98d7175824e6e2407468/fa" data-source="Git bundles are files that store a pack-file along with some extra metadata, including a set of refs and a (possibly empty) set of necessary commits. See &lt;a href=&quot;git-bundle&quot;&gt;git-bundle[1]&lt;/a&gt; and &lt;a href=&quot;gitformat-bundle&quot;&gt;gitformat-bundle[5]&lt;/a&gt; for more information." onmousemove="i18n(this)">&Pcy;&acy;&kcy;&iecy;&tcy;&ycy;  Git  &mdash; &ecy;&tcy;&ocy; &fcy;&acy;&jcy;&lcy;&ycy;, &vcy; &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&khcy; &khcy;&rcy;&acy;&ncy;&icy;&tcy;&scy;&yacy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&jcy; &fcy;&acy;&jcy;&lcy; &vcy;&mcy;&iecy;&scy;&tcy;&iecy; &scy; &ncy;&iecy;&kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&mcy;&icy; &dcy;&ocy;&pcy;&ocy;&lcy;&ncy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ycy;&mcy;&icy; &mcy;&iecy;&tcy;&acy;&dcy;&acy;&ncy;&ncy;&ycy;&mcy;&icy;, &vcy;&kcy;&lcy;&yucy;&chcy;&acy;&yacy; &ncy;&acy;&bcy;&ocy;&rcy; &scy;&scy;&ycy;&lcy;&ocy;&kcy; &icy; (&vcy;&ocy;&zcy;&mcy;&ocy;&zhcy;&ncy;&ocy;, &pcy;&ucy;&scy;&tcy;&ocy;&jcy;) &ncy;&acy;&bcy;&ocy;&rcy; &ncy;&iecy;&ocy;&bcy;&khcy;&ocy;&dcy;&icy;&mcy;&ycy;&khcy; &kcy;&ocy;&mcy;&mcy;&icy;&tcy;&ocy;&vcy;. &Dcy;&ocy;&pcy;&ocy;&lcy;&ncy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ucy;&yucy; &icy;&ncy;&fcy;&ocy;&rcy;&mcy;&acy;&tscy;&icy;&yucy; &scy;&mcy;. &vcy;  <a href="git-bundle.html">git-bundle[1]</a>  &icy;  <a href="gitformat-bundle.html">gitformat-bundle[5]</a> .</span></p> <p><span data-i18n="844531f4ae9054b76f33a80b433fd029da15b7da74fa6383f9dcbf8cf860189a/d3" data-source="Bundle URIs are locations where Git can download one or more bundles in order to bootstrap the object database in advance of fetching the remaining objects from a remote." onmousemove="i18n(this)">URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &mdash; &ecy;&tcy;&ocy; &mcy;&iecy;&scy;&tcy;&acy;, &gcy;&dcy;&iecy;  Git  &mcy;&ocy;&zhcy;&iecy;&tcy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&icy;&tcy;&softcy; &ocy;&dcy;&icy;&ncy; &icy;&lcy;&icy; &ncy;&iecy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&ocy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;, &chcy;&tcy;&ocy;&bcy;&ycy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&icy;&tcy;&softcy; &bcy;&acy;&zcy;&ucy; &dcy;&acy;&ncy;&ncy;&ycy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy; &pcy;&iecy;&rcy;&iecy;&dcy; &pcy;&ocy;&lcy;&ucy;&chcy;&iecy;&ncy;&icy;&iecy;&mcy; &ocy;&scy;&tcy;&acy;&lcy;&softcy;&ncy;&ycy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy; &scy; &ucy;&dcy;&acy;&lcy;&iecy;&ncy;&ncy;&ocy;&gcy;&ocy; &ucy;&scy;&tcy;&rcy;&ocy;&jcy;&scy;&tcy;&vcy;&acy;.</span></p> <p><span data-i18n="4b3e7e0e88a49f95044e03c7c49be118464c0f614d9b9473be8f97ce495cbd87/79" data-source="One goal is to speed up clones and fetches for users with poor network connectivity to the origin server. Another benefit is to allow heavy users, such as CI build farms, to use local resources for the majority of Git data and thereby reducing the load on the origin server." onmousemove="i18n(this)">&Ocy;&dcy;&ncy;&acy; &icy;&zcy; &tscy;&iecy;&lcy;&iecy;&jcy; &mdash; &ucy;&scy;&kcy;&ocy;&rcy;&icy;&tcy;&softcy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&iecy; &icy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&ucy; &dcy;&lcy;&yacy; &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&iecy;&jcy; &scy; &pcy;&lcy;&ocy;&khcy;&icy;&mcy; &scy;&iecy;&tcy;&iecy;&vcy;&ycy;&mcy; &pcy;&ocy;&dcy;&kcy;&lcy;&yucy;&chcy;&iecy;&ncy;&icy;&iecy;&mcy; &kcy; &icy;&scy;&khcy;&ocy;&dcy;&ncy;&ocy;&mcy;&ucy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ucy;. &IEcy;&shchcy;&iecy; &ocy;&dcy;&ncy;&icy;&mcy; &pcy;&rcy;&iecy;&icy;&mcy;&ucy;&shchcy;&iecy;&scy;&tcy;&vcy;&ocy;&mcy; &yacy;&vcy;&lcy;&yacy;&iecy;&tcy;&scy;&yacy; &pcy;&rcy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&vcy;&lcy;&iecy;&ncy;&icy;&iecy; &vcy;&ocy;&zcy;&mcy;&ocy;&zhcy;&ncy;&ocy;&scy;&tcy;&icy; &acy;&kcy;&tcy;&icy;&vcy;&ncy;&ycy;&mcy; &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&yacy;&mcy;, &tcy;&acy;&kcy;&icy;&mcy; &kcy;&acy;&kcy; &fcy;&iecy;&rcy;&mcy;&ycy; CI-&scy;&bcy;&ocy;&rcy;&kcy;&icy;, &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy; &lcy;&ocy;&kcy;&acy;&lcy;&softcy;&ncy;&ycy;&iecy; &rcy;&iecy;&scy;&ucy;&rcy;&scy;&ycy; &dcy;&lcy;&yacy; &bcy;&ocy;&lcy;&softcy;&shcy;&icy;&ncy;&scy;&tcy;&vcy;&acy; &dcy;&acy;&ncy;&ncy;&ycy;&khcy;  Git  &icy; &tcy;&iecy;&mcy; &scy;&acy;&mcy;&ycy;&mcy; &scy;&ncy;&icy;&zcy;&icy;&tcy;&softcy; &ncy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&ucy; &ncy;&acy; &icy;&scy;&khcy;&ocy;&dcy;&ncy;&ycy;&jcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;.</span></p> <p><span data-i18n="dc8515234c7c31b91d6a0dad473181dd391cdb71f465ed8106060e8a720ba367/c3" data-source="To enable the bundle URI feature, users can specify a bundle URI using command-line options or the origin server can advertise one or more URIs via a protocol v2 capability." onmousemove="i18n(this)">&CHcy;&tcy;&ocy;&bcy;&ycy; &vcy;&kcy;&lcy;&yucy;&chcy;&icy;&tcy;&softcy; &fcy;&ucy;&ncy;&kcy;&tscy;&icy;&yucy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy;, &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&icy; &mcy;&ocy;&gcy;&ucy;&tcy; &ucy;&kcy;&acy;&zcy;&acy;&tcy;&softcy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &scy; &pcy;&ocy;&mcy;&ocy;&shchcy;&softcy;&yucy; &pcy;&acy;&rcy;&acy;&mcy;&iecy;&tcy;&rcy;&ocy;&vcy; &kcy;&ocy;&mcy;&acy;&ncy;&dcy;&ncy;&ocy;&jcy; &scy;&tcy;&rcy;&ocy;&kcy;&icy;, &icy;&lcy;&icy; &icy;&scy;&khcy;&ocy;&dcy;&ncy;&ycy;&jcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &ocy;&bcy;&hardcy;&yacy;&vcy;&icy;&tcy;&softcy; &ocy;&dcy;&icy;&ncy; &icy;&lcy;&icy; &ncy;&iecy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&ocy; URI &scy; &pcy;&ocy;&mcy;&ocy;&shchcy;&softcy;&yucy; &vcy;&ocy;&zcy;&mcy;&ocy;&zhcy;&ncy;&ocy;&scy;&tcy;&icy; &pcy;&rcy;&ocy;&tcy;&ocy;&kcy;&ocy;&lcy;&acy; v2.</span></p> </div> <h2 class="text-body-emphasis"  id="_design_goals"><span data-i18n="1d72420e59bc2f1849b48179cd16bc4cbc24cc2e8622ba936c9814a8738154a2/ea" data-source="Design goals" onmousemove="i18n(this)">Design goals</span></h2> <div> <p><span data-i18n="880f355507721b51bfbd0e8de01e1b0e4225eeb96a455dab083fe5fa3872eda6/dc" data-source="The bundle URI standard aims to be flexible enough to satisfy multiple workloads. The bundle provider and the Git client have several choices in how they create and consume bundle URIs." onmousemove="i18n(this)">&Scy;&tcy;&acy;&ncy;&dcy;&acy;&rcy;&tcy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &scy;&tcy;&rcy;&iecy;&mcy;&icy;&tcy;&scy;&yacy; &bcy;&ycy;&tcy;&softcy; &dcy;&ocy;&scy;&tcy;&acy;&tcy;&ocy;&chcy;&ncy;&ocy; &gcy;&icy;&bcy;&kcy;&icy;&mcy;, &chcy;&tcy;&ocy;&bcy;&ycy; &ucy;&dcy;&ocy;&vcy;&lcy;&iecy;&tcy;&vcy;&ocy;&rcy;&icy;&tcy;&softcy; &ncy;&iecy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&ocy; &rcy;&acy;&bcy;&ocy;&chcy;&icy;&khcy; &ncy;&acy;&gcy;&rcy;&ucy;&zcy;&ocy;&kcy;. &Pcy;&ocy;&scy;&tcy;&acy;&vcy;&shchcy;&icy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&acy; &icy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;  Git  &icy;&mcy;&iecy;&yucy;&tcy; &ncy;&iecy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&ocy; &vcy;&acy;&rcy;&icy;&acy;&ncy;&tcy;&ocy;&vcy; &scy;&ocy;&zcy;&dcy;&acy;&ncy;&icy;&yacy; &icy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy;.</span></p> <div> <ul> <li> <p><span data-i18n="a36d43c8df0dc70d273a98adb8ca84865bbcc693f0ccb0be1e6ab3856ee57d02/db" data-source="Bundles can have whatever name the server desires. This name could refer to immutable data by using a hash of the bundle contents. However, this means that a new URI will be needed after every update of the content. This might be acceptable if the server is advertising the URI (and the server is aware of new bundles being generated) but would not be ergonomic for users using the command line option." onmousemove="i18n(this)">&Pcy;&acy;&kcy;&iecy;&tcy;&ycy; &mcy;&ocy;&gcy;&ucy;&tcy; &icy;&mcy;&iecy;&tcy;&softcy; &lcy;&yucy;&bcy;&ocy;&iecy; &icy;&mcy;&yacy;, &kcy;&acy;&kcy;&ocy;&iecy; &pcy;&ocy;&zhcy;&iecy;&lcy;&acy;&iecy;&tcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;. &Ecy;&tcy;&ocy; &icy;&mcy;&yacy; &mcy;&ocy;&zhcy;&iecy;&tcy; &ocy;&tcy;&ncy;&ocy;&scy;&icy;&tcy;&softcy;&scy;&yacy; &kcy; &ncy;&iecy;&icy;&zcy;&mcy;&iecy;&ncy;&yacy;&iecy;&mcy;&ycy;&mcy; &dcy;&acy;&ncy;&ncy;&ycy;&mcy;, &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&yacy; &khcy;&ecy;&shcy; &scy;&ocy;&dcy;&iecy;&rcy;&zhcy;&icy;&mcy;&ocy;&gcy;&ocy; &pcy;&acy;&kcy;&iecy;&tcy;&acy;. &Ocy;&dcy;&ncy;&acy;&kcy;&ocy; &ecy;&tcy;&ocy; &ocy;&zcy;&ncy;&acy;&chcy;&acy;&iecy;&tcy;, &chcy;&tcy;&ocy; &ncy;&ocy;&vcy;&ycy;&jcy; URI &pcy;&ocy;&tcy;&rcy;&iecy;&bcy;&ucy;&iecy;&tcy;&scy;&yacy; &pcy;&ocy;&scy;&lcy;&iecy; &kcy;&acy;&zhcy;&dcy;&ocy;&gcy;&ocy; &ocy;&bcy;&ncy;&ocy;&vcy;&lcy;&iecy;&ncy;&icy;&yacy; &kcy;&ocy;&ncy;&tcy;&iecy;&ncy;&tcy;&acy;. &Ecy;&tcy;&ocy; &mcy;&ocy;&zhcy;&iecy;&tcy; &bcy;&ycy;&tcy;&softcy; &pcy;&rcy;&icy;&iecy;&mcy;&lcy;&iecy;&mcy;&ocy;, &iecy;&scy;&lcy;&icy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy; &ocy;&bcy;&hardcy;&yacy;&vcy;&lcy;&yacy;&iecy;&tcy; URI (&icy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy; &zcy;&ncy;&acy;&iecy;&tcy; &ocy; &scy;&ocy;&zcy;&dcy;&acy;&ncy;&icy;&icy; &ncy;&ocy;&vcy;&ycy;&khcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;), &ncy;&ocy; &ncy;&iecy; &bcy;&ucy;&dcy;&iecy;&tcy; &ecy;&rcy;&gcy;&ocy;&ncy;&ocy;&mcy;&icy;&chcy;&ncy;&ocy; &dcy;&lcy;&yacy; &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&iecy;&jcy;, &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&yucy;&shchcy;&icy;&khcy; &pcy;&acy;&rcy;&acy;&mcy;&iecy;&tcy;&rcy; &kcy;&ocy;&mcy;&acy;&ncy;&dcy;&ncy;&ocy;&jcy; &scy;&tcy;&rcy;&ocy;&kcy;&icy;.</span></p> </li> <li> <p><span data-i18n="06c90de6151ef307637c5f78e170ef67fb18fe9e8e77bcf89e45d4a638c461e0/ab" data-source="The bundles could be organized specifically for bootstrapping full clones, but could also be organized with the intention of bootstrapping incremental fetches. The bundle provider must decide on one of several organization schemes to minimize client downloads during incremental fetches, but the Git client can also choose whether to use bundles for either of these operations." onmousemove="i18n(this)">&Pcy;&acy;&kcy;&iecy;&tcy;&ycy; &mcy;&ocy;&gcy;&ucy;&tcy; &bcy;&ycy;&tcy;&softcy; &ocy;&rcy;&gcy;&acy;&ncy;&icy;&zcy;&ocy;&vcy;&acy;&ncy;&ycy; &scy;&pcy;&iecy;&tscy;&icy;&acy;&lcy;&softcy;&ncy;&ocy; &dcy;&lcy;&yacy; &ncy;&acy;&chcy;&acy;&lcy;&softcy;&ncy;&ocy;&jcy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&icy; &pcy;&ocy;&lcy;&ncy;&ycy;&khcy; &kcy;&lcy;&ocy;&ncy;&ocy;&vcy;, &ncy;&ocy; &tcy;&acy;&kcy;&zhcy;&iecy; &mcy;&ocy;&gcy;&ucy;&tcy; &bcy;&ycy;&tcy;&softcy; &ocy;&rcy;&gcy;&acy;&ncy;&icy;&zcy;&ocy;&vcy;&acy;&ncy;&ycy; &scy; &tscy;&iecy;&lcy;&softcy;&yucy; &ncy;&acy;&chcy;&acy;&lcy;&softcy;&ncy;&ocy;&jcy; &ncy;&acy;&chcy;&acy;&lcy;&softcy;&ncy;&ocy;&jcy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&icy; &dcy;&ocy;&pcy;&ocy;&lcy;&ncy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ycy;&khcy; &vcy;&ycy;&bcy;&ocy;&rcy;&ocy;&kcy;. &Pcy;&ocy;&scy;&tcy;&acy;&vcy;&shchcy;&icy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &dcy;&ocy;&lcy;&zhcy;&iecy;&ncy; &vcy;&ycy;&bcy;&rcy;&acy;&tcy;&softcy; &ocy;&dcy;&ncy;&ucy; &icy;&zcy; &ncy;&iecy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&icy;&khcy; &scy;&khcy;&iecy;&mcy; &ocy;&rcy;&gcy;&acy;&ncy;&icy;&zcy;&acy;&tscy;&icy;&icy;, &chcy;&tcy;&ocy;&bcy;&ycy; &mcy;&icy;&ncy;&icy;&mcy;&icy;&zcy;&icy;&rcy;&ocy;&vcy;&acy;&tcy;&softcy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&ucy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&acy; &vcy;&ocy; &vcy;&rcy;&iecy;&mcy;&yacy; &dcy;&ocy;&bcy;&acy;&vcy;&ocy;&chcy;&ncy;&ocy;&jcy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&icy;, &ncy;&ocy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;  Git  &tcy;&acy;&kcy;&zhcy;&iecy; &mcy;&ocy;&zhcy;&iecy;&tcy; &vcy;&ycy;&bcy;&rcy;&acy;&tcy;&softcy;, &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy; &lcy;&icy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy; &dcy;&lcy;&yacy; &lcy;&yucy;&bcy;&ocy;&jcy; &icy;&zcy; &ecy;&tcy;&icy;&khcy; &ocy;&pcy;&iecy;&rcy;&acy;&tscy;&icy;&jcy;.</span></p> </li> <li> <p><span data-i18n="68f07581b3208e278f5a6ea76196c66dc11a448f9d3d93253c5ffc3ffc85a047/52" data-source="The bundle provider can choose to support full clones, partial clones, or both. The client can detect which bundles are appropriate for the repository&amp;rsquo;s partial clone filter, if any." onmousemove="i18n(this)">&Pcy;&ocy;&scy;&tcy;&acy;&vcy;&shchcy;&icy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&acy; &mcy;&ocy;&zhcy;&iecy;&tcy; &vcy;&ycy;&bcy;&rcy;&acy;&tcy;&softcy; &pcy;&ocy;&dcy;&dcy;&iecy;&rcy;&zhcy;&kcy;&ucy; &pcy;&ocy;&lcy;&ncy;&ycy;&khcy; &kcy;&lcy;&ocy;&ncy;&ocy;&vcy;, &chcy;&acy;&scy;&tcy;&icy;&chcy;&ncy;&ycy;&khcy; &kcy;&lcy;&ocy;&ncy;&ocy;&vcy; &icy;&lcy;&icy; &tcy;&ocy;&gcy;&ocy; &icy; &dcy;&rcy;&ucy;&gcy;&ocy;&gcy;&ocy;. &Kcy;&lcy;&icy;&iecy;&ncy;&tcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &ocy;&pcy;&rcy;&iecy;&dcy;&iecy;&lcy;&icy;&tcy;&softcy;, &kcy;&acy;&kcy;&icy;&iecy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy; &pcy;&ocy;&dcy;&khcy;&ocy;&dcy;&yacy;&tcy; &dcy;&lcy;&yacy; &fcy;&icy;&lcy;&softcy;&tcy;&rcy;&acy; &chcy;&acy;&scy;&tcy;&icy;&chcy;&ncy;&ocy;&gcy;&ocy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&yacy;, &iecy;&scy;&lcy;&icy; &tcy;&acy;&kcy;&ocy;&vcy;&ocy;&jcy; &icy;&mcy;&iecy;&iecy;&tcy;&scy;&yacy;.</span></p> </li> <li> <p><span data-i18n="15a585f137810ad2c0ffb61bc5753fcec1d09076727334201892623e4e648839/25" data-source="The bundle provider can use a single bundle (for clones only), or a list of bundles. When using a list of bundles, the provider can specify whether or not the client needs &lt;code&gt;all&lt;/code&gt; of the bundle URIs for a full clone, or if &lt;code&gt;any&lt;/code&gt; one of the bundle URIs is sufficient. This allows the bundle provider to use different URIs for different geographies." onmousemove="i18n(this)">&Pcy;&ocy;&scy;&tcy;&acy;&vcy;&shchcy;&icy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy; &ocy;&dcy;&icy;&ncy; &pcy;&acy;&kcy;&iecy;&tcy; (&tcy;&ocy;&lcy;&softcy;&kcy;&ocy; &dcy;&lcy;&yacy; &kcy;&lcy;&ocy;&ncy;&ocy;&vcy;) &icy;&lcy;&icy; &scy;&pcy;&icy;&scy;&ocy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;. &Pcy;&rcy;&icy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&ncy;&icy;&icy; &scy;&pcy;&icy;&scy;&kcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &pcy;&ocy;&scy;&tcy;&acy;&vcy;&shchcy;&icy;&kcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &ucy;&kcy;&acy;&zcy;&acy;&tcy;&softcy;, &ncy;&ucy;&zhcy;&iecy;&ncy; &lcy;&icy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&ucy;  <code>all</code>  URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &dcy;&lcy;&yacy; &pcy;&ocy;&lcy;&ncy;&ocy;&gcy;&ocy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy; &icy;&lcy;&icy;  <code>any</code>  &dcy;&ocy;&scy;&tcy;&acy;&tcy;&ocy;&chcy;&ncy;&ocy; &ocy;&dcy;&ncy;&ocy;&gcy;&ocy; &icy;&zcy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy;. &Ecy;&tcy;&ocy; &pcy;&ocy;&zcy;&vcy;&ocy;&lcy;&yacy;&iecy;&tcy; &pcy;&ocy;&scy;&tcy;&acy;&vcy;&shchcy;&icy;&kcy;&ucy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy; &rcy;&acy;&zcy;&ncy;&ycy;&iecy; URI &dcy;&lcy;&yacy; &rcy;&acy;&zcy;&ncy;&ycy;&khcy; &gcy;&iecy;&ocy;&gcy;&rcy;&acy;&fcy;&icy;&chcy;&iecy;&scy;&kcy;&icy;&khcy; &rcy;&iecy;&gcy;&icy;&ocy;&ncy;&ocy;&vcy;.</span></p> </li> <li> <p><span data-i18n="e86cdda02043062d4e7d22175322a4585196c4c76ac47c338b8abb7d73b815f8/f7" data-source="The bundle provider can organize the bundles using heuristics, such as creation tokens, to help the client prevent downloading bundles it does not need. When the bundle provider does not provide these heuristics, the client can use optimizations to minimize how much of the data is downloaded." onmousemove="i18n(this)">&Pcy;&ocy;&scy;&tcy;&acy;&vcy;&shchcy;&icy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &ocy;&rcy;&gcy;&acy;&ncy;&icy;&zcy;&ocy;&vcy;&ycy;&vcy;&acy;&tcy;&softcy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy; &scy; &pcy;&ocy;&mcy;&ocy;&shchcy;&softcy;&yucy; &ecy;&vcy;&rcy;&icy;&scy;&tcy;&icy;&kcy;&icy;, &ncy;&acy;&pcy;&rcy;&icy;&mcy;&iecy;&rcy; &tcy;&ocy;&kcy;&iecy;&ncy;&ocy;&vcy; &scy;&ocy;&zcy;&dcy;&acy;&ncy;&icy;&yacy;, &chcy;&tcy;&ocy;&bcy;&ycy; &pcy;&ocy;&mcy;&ocy;&chcy;&softcy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&ucy; &pcy;&rcy;&iecy;&dcy;&ocy;&tcy;&vcy;&rcy;&acy;&tcy;&icy;&tcy;&softcy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&ucy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;, &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&iecy; &iecy;&mcy;&ucy; &ncy;&iecy; &ncy;&ucy;&zhcy;&ncy;&ycy;. &IEcy;&scy;&lcy;&icy; &pcy;&ocy;&scy;&tcy;&acy;&vcy;&shchcy;&icy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&acy; &ncy;&iecy; &pcy;&rcy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&vcy;&lcy;&yacy;&iecy;&tcy; &ecy;&tcy;&ucy; &ecy;&vcy;&rcy;&icy;&scy;&tcy;&icy;&kcy;&ucy;, &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy; &ocy;&pcy;&tcy;&icy;&mcy;&icy;&zcy;&acy;&tscy;&icy;&yucy;, &chcy;&tcy;&ocy;&bcy;&ycy; &mcy;&icy;&ncy;&icy;&mcy;&icy;&zcy;&icy;&rcy;&ocy;&vcy;&acy;&tcy;&softcy; &ocy;&bcy;&hardcy;&iecy;&mcy; &zcy;&acy;&gcy;&rcy;&ucy;&zhcy;&acy;&iecy;&mcy;&ycy;&khcy; &dcy;&acy;&ncy;&ncy;&ycy;&khcy;.</span></p> </li> <li> <p><span data-i18n="59e76dbaa0936236e49c4ff2d150d7e79f5b4c77be827b576ef1be8e075f6262/d6" data-source="The bundle provider does not need to be associated with the Git server. The client can choose to use the bundle provider without it being advertised by the Git server." onmousemove="i18n(this)">&Pcy;&ocy;&scy;&tcy;&acy;&vcy;&shchcy;&icy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&acy; &ncy;&iecy; &ocy;&bcy;&yacy;&zcy;&acy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy; &dcy;&ocy;&lcy;&zhcy;&iecy;&ncy; &bcy;&ycy;&tcy;&softcy; &scy;&vcy;&yacy;&zcy;&acy;&ncy; &scy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ocy;&mcy;  Git . &Kcy;&lcy;&icy;&iecy;&ncy;&tcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy; &pcy;&ocy;&scy;&tcy;&acy;&vcy;&shchcy;&icy;&kcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &bcy;&iecy;&zcy; &iecy;&gcy;&ocy; &ocy;&bcy;&hardcy;&yacy;&vcy;&lcy;&iecy;&ncy;&icy;&yacy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ocy;&mcy;  Git .</span></p> </li> <li> <p><span data-i18n="94037d654fc46770f992c730d90a56ac41701b421275a1f7e512a866c020ba90/7f" data-source="The client can choose to discover bundle providers that are advertised by the Git server. This could happen during &lt;code&gt;git clone&lt;/code&gt;, during &lt;code&gt;git fetch&lt;/code&gt;, both, or neither. The user can choose which combination works best for them." onmousemove="i18n(this)">&Kcy;&lcy;&icy;&iecy;&ncy;&tcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &vcy;&ycy;&bcy;&rcy;&acy;&tcy;&softcy; &pcy;&ocy;&scy;&tcy;&acy;&vcy;&shchcy;&icy;&kcy;&ocy;&vcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;, &rcy;&iecy;&kcy;&lcy;&acy;&mcy;&icy;&rcy;&ucy;&iecy;&mcy;&ycy;&khcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ocy;&mcy;  Git . &Ecy;&tcy;&ocy; &mcy;&ocy;&gcy;&lcy;&ocy; &pcy;&rcy;&ocy;&icy;&zcy;&ocy;&jcy;&tcy;&icy; &vcy;&ocy; &vcy;&rcy;&iecy;&mcy;&yacy;  <code>git clone</code> , &vcy;&ocy; &vcy;&rcy;&iecy;&mcy;&yacy;  <code>git fetch</code> , &vcy; &ocy;&bcy;&ocy;&icy;&khcy; &scy;&lcy;&ucy;&chcy;&acy;&yacy;&khcy; &icy;&lcy;&icy; &ncy;&icy; &vcy; &ocy;&dcy;&ncy;&ocy;&mcy; &icy;&zcy; &ncy;&icy;&khcy;. &Pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&softcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &vcy;&ycy;&bcy;&rcy;&acy;&tcy;&softcy;, &kcy;&acy;&kcy;&acy;&yacy; &kcy;&ocy;&mcy;&bcy;&icy;&ncy;&acy;&tscy;&icy;&yacy; &lcy;&ucy;&chcy;&shcy;&iecy; &vcy;&scy;&iecy;&gcy;&ocy; &iecy;&mcy;&ucy; &pcy;&ocy;&dcy;&khcy;&ocy;&dcy;&icy;&tcy;.</span></p> </li> <li> <p><span data-i18n="ec7f71b28944e6dcc366eb73b981187450c913d30a0b1b2944ffb0ef0fc21fea/79" data-source="The client can choose to configure a bundle provider manually at any time. The client can also choose to specify a bundle provider manually as a command-line option to &lt;code&gt;git clone&lt;/code&gt;." onmousemove="i18n(this)">&Kcy;&lcy;&icy;&iecy;&ncy;&tcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &vcy; &lcy;&yucy;&bcy;&ocy;&iecy; &vcy;&rcy;&iecy;&mcy;&yacy; &ncy;&acy;&scy;&tcy;&rcy;&ocy;&icy;&tcy;&softcy; &pcy;&ocy;&scy;&tcy;&acy;&vcy;&shchcy;&icy;&kcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &vcy;&rcy;&ucy;&chcy;&ncy;&ucy;&yucy;. &Kcy;&lcy;&icy;&iecy;&ncy;&tcy; &tcy;&acy;&kcy;&zhcy;&iecy; &mcy;&ocy;&zhcy;&iecy;&tcy; &ucy;&kcy;&acy;&zcy;&acy;&tcy;&softcy; &pcy;&ocy;&scy;&tcy;&acy;&vcy;&shchcy;&icy;&kcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &vcy;&rcy;&ucy;&chcy;&ncy;&ucy;&yucy; &vcy; &kcy;&acy;&chcy;&iecy;&scy;&tcy;&vcy;&iecy; &pcy;&acy;&rcy;&acy;&mcy;&iecy;&tcy;&rcy;&acy; &kcy;&ocy;&mcy;&acy;&ncy;&dcy;&ncy;&ocy;&jcy; &scy;&tcy;&rcy;&ocy;&kcy;&icy;  <code>git clone</code>  .</span></p> </li> </ul> </div> <p><span data-i18n="335d9843be161a18984b146caf683c95604b5005d77ead1ffca4e2bad5d7127c/70" data-source="Each repository is different and every Git server has different needs. Hopefully the bundle URI feature is flexible enough to satisfy all needs. If not, then the feature can be extended through its versioning mechanism." onmousemove="i18n(this)">&Kcy;&acy;&zhcy;&dcy;&ycy;&jcy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&jcy; &ucy;&ncy;&icy;&kcy;&acy;&lcy;&iecy;&ncy;, &icy; &ucy; &kcy;&acy;&zhcy;&dcy;&ocy;&gcy;&ocy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&acy;  Git  &rcy;&acy;&zcy;&ncy;&ycy;&iecy; &pcy;&ocy;&tcy;&rcy;&iecy;&bcy;&ncy;&ocy;&scy;&tcy;&icy;. &Ncy;&acy;&dcy;&iecy;&iecy;&mcy;&scy;&yacy;, &chcy;&tcy;&ocy; &fcy;&ucy;&ncy;&kcy;&tscy;&icy;&yacy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &dcy;&ocy;&scy;&tcy;&acy;&tcy;&ocy;&chcy;&ncy;&ocy; &gcy;&icy;&bcy;&kcy;&acy;&yacy;, &chcy;&tcy;&ocy;&bcy;&ycy; &ucy;&dcy;&ocy;&vcy;&lcy;&iecy;&tcy;&vcy;&ocy;&rcy;&icy;&tcy;&softcy; &vcy;&scy;&iecy; &pcy;&ocy;&tcy;&rcy;&iecy;&bcy;&ncy;&ocy;&scy;&tcy;&icy;. &IEcy;&scy;&lcy;&icy; &ncy;&iecy;&tcy;, &tcy;&ocy; &ecy;&tcy;&ucy; &fcy;&ucy;&ncy;&kcy;&tscy;&icy;&yucy; &mcy;&ocy;&zhcy;&ncy;&ocy; &rcy;&acy;&scy;&shcy;&icy;&rcy;&icy;&tcy;&softcy; &scy; &pcy;&ocy;&mcy;&ocy;&shchcy;&softcy;&yucy; &mcy;&iecy;&khcy;&acy;&ncy;&icy;&zcy;&mcy;&acy; &ucy;&pcy;&rcy;&acy;&vcy;&lcy;&iecy;&ncy;&icy;&yacy; &vcy;&iecy;&rcy;&scy;&icy;&yacy;&mcy;&icy;.</span></p> </div> <h2 class="text-body-emphasis"  id="_server_requirements"><span data-i18n="478a3a0b8b6543bcb6ddbb8012c91f0ef4b83d561030e50db906e6bd6413ee13/da" data-source="Server requirements" onmousemove="i18n(this)">Server requirements</span></h2> <div> <p><span data-i18n="874e2d8a402045414cfa7d288882e61adb1eb5aa7144e68bdac7c3d742194f56/55" data-source="To provide a server-side implementation of bundle servers, no other parts of the Git protocol are required. This allows server maintainers to use static content solutions such as CDNs in order to serve the bundle files." onmousemove="i18n(this)">&Dcy;&lcy;&yacy; &rcy;&iecy;&acy;&lcy;&icy;&zcy;&acy;&tscy;&icy;&icy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ncy;&ocy;&jcy; &rcy;&iecy;&acy;&lcy;&icy;&zcy;&acy;&tscy;&icy;&icy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&khcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ocy;&vcy; &ncy;&icy;&kcy;&acy;&kcy;&icy;&iecy; &dcy;&rcy;&ucy;&gcy;&icy;&iecy; &chcy;&acy;&scy;&tcy;&icy; &pcy;&rcy;&ocy;&tcy;&ocy;&kcy;&ocy;&lcy;&acy;  Git  &ncy;&iecy; &tcy;&rcy;&iecy;&bcy;&ucy;&yucy;&tcy;&scy;&yacy;. &Ecy;&tcy;&ocy; &pcy;&ocy;&zcy;&vcy;&ocy;&lcy;&yacy;&iecy;&tcy; &scy;&pcy;&iecy;&tscy;&icy;&acy;&lcy;&icy;&scy;&tcy;&acy;&mcy; &pcy;&ocy; &ocy;&bcy;&scy;&lcy;&ucy;&zhcy;&icy;&vcy;&acy;&ncy;&icy;&yucy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ocy;&vcy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy; &kcy;&ocy;&ncy;&tcy;&iecy;&ncy;&tcy;-&rcy;&iecy;&shcy;&iecy;&ncy;&icy;&yacy;  static , &tcy;&acy;&kcy;&icy;&iecy; &kcy;&acy;&kcy; CDN, &dcy;&lcy;&yacy; &ocy;&bcy;&scy;&lcy;&ucy;&zhcy;&icy;&vcy;&acy;&ncy;&icy;&yacy; &fcy;&acy;&jcy;&lcy;&ocy;&vcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;.</span></p> <p><span data-i18n="ab8e5d4d1f09dd6b00518beb1e54a6f91d1de121c904fb34c98892da56a9add0/f3" data-source="At the current scope of the bundle URI feature, all URIs are expected to be HTTP(S) URLs where content is downloaded to a local file using a &lt;code&gt;GET&lt;/code&gt; request to that URL. The server could include authentication requirements to those requests with the aim of triggering the configured credential helper for secure access. (Future extensions could use &amp;quot;file://&amp;quot; URIs or SSH URIs.)" onmousemove="i18n(this)">&Vcy; &tcy;&iecy;&kcy;&ucy;&shchcy;&iecy;&jcy; &ocy;&bcy;&lcy;&acy;&scy;&tcy;&icy; &dcy;&iecy;&jcy;&scy;&tcy;&vcy;&icy;&yacy; &fcy;&ucy;&ncy;&kcy;&tscy;&icy;&icy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &ocy;&zhcy;&icy;&dcy;&acy;&iecy;&tcy;&scy;&yacy;, &chcy;&tcy;&ocy; &vcy;&scy;&iecy; URI &bcy;&ucy;&dcy;&ucy;&tcy; URL-&acy;&dcy;&rcy;&iecy;&scy;&acy;&mcy;&icy; HTTP(S), &gcy;&dcy;&iecy; &kcy;&ocy;&ncy;&tcy;&iecy;&ncy;&tcy; &zcy;&acy;&gcy;&rcy;&ucy;&zhcy;&acy;&iecy;&tcy;&scy;&yacy; &vcy; &lcy;&ocy;&kcy;&acy;&lcy;&softcy;&ncy;&ycy;&jcy; &fcy;&acy;&jcy;&lcy; &scy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&ncy;&icy;&iecy;&mcy; &zcy;&acy;&pcy;&rcy;&ocy;&scy;&acy;  <code>GET</code>  &kcy; &ecy;&tcy;&ocy;&mcy;&ucy; URL-&acy;&dcy;&rcy;&iecy;&scy;&ucy;. &Scy;&iecy;&rcy;&vcy;&iecy;&rcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &vcy;&kcy;&lcy;&yucy;&chcy;&acy;&tcy;&softcy; &tcy;&rcy;&iecy;&bcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy; &acy;&ucy;&tcy;&iecy;&ncy;&tcy;&icy;&fcy;&icy;&kcy;&acy;&tscy;&icy;&icy; &vcy; &ecy;&tcy;&icy; &zcy;&acy;&pcy;&rcy;&ocy;&scy;&ycy; &scy; &tscy;&iecy;&lcy;&softcy;&yucy; &zcy;&acy;&pcy;&ucy;&scy;&kcy;&acy; &ncy;&acy;&scy;&tcy;&rcy;&ocy;&iecy;&ncy;&ncy;&ocy;&gcy;&ocy; &pcy;&ocy;&mcy;&ocy;&shchcy;&ncy;&icy;&kcy;&acy; &pcy;&ocy; &ucy;&chcy;&iecy;&tcy;&ncy;&ycy;&mcy; &dcy;&acy;&ncy;&ncy;&ycy;&mcy; &dcy;&lcy;&yacy; &bcy;&iecy;&zcy;&ocy;&pcy;&acy;&scy;&ncy;&ocy;&gcy;&ocy; &dcy;&ocy;&scy;&tcy;&ucy;&pcy;&acy;. (&Vcy; &bcy;&ucy;&dcy;&ucy;&shchcy;&icy;&khcy; &rcy;&acy;&scy;&shcy;&icy;&rcy;&iecy;&ncy;&icy;&yacy;&khcy; &mcy;&ocy;&gcy;&ucy;&tcy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy;&scy;&yacy; URI  &quot;file://&quot;  &icy;&lcy;&icy; URI SSH.)</span></p> <p><span data-i18n="b78985c67603c85ee743eebe7e268528fd373e46f558f22f04a5e14d241d776d/3d" data-source="Assuming a &lt;code&gt;200 OK&lt;/code&gt; response from the server, the content at the URL is inspected. First, Git attempts to parse the file as a bundle file of version 2 or higher. If the file is not a bundle, then the file is parsed as a plain-text file using Git&amp;rsquo;s config parser. The key-value pairs in that config file are expected to describe a list of bundle URIs. If neither of these parse attempts succeed, then Git will report an error to the user that the bundle URI provided erroneous data." onmousemove="i18n(this)">&Pcy;&rcy;&iecy;&dcy;&pcy;&ocy;&lcy;&acy;&gcy;&acy;&yacy; &ocy;&tcy;&vcy;&iecy;&tcy;  <code>200 OK</code>  &ocy;&tcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&acy;, &pcy;&rcy;&ocy;&vcy;&iecy;&rcy;&yacy;&iecy;&tcy;&scy;&yacy; &scy;&ocy;&dcy;&iecy;&rcy;&zhcy;&icy;&mcy;&ocy;&iecy; URL-&acy;&dcy;&rcy;&iecy;&scy;&acy;. &Scy;&ncy;&acy;&chcy;&acy;&lcy;&acy;  Git  &pcy;&ycy;&tcy;&acy;&iecy;&tcy;&scy;&yacy; &pcy;&rcy;&ocy;&acy;&ncy;&acy;&lcy;&icy;&zcy;&icy;&rcy;&ocy;&vcy;&acy;&tcy;&softcy; &fcy;&acy;&jcy;&lcy; &kcy;&acy;&kcy; &fcy;&acy;&jcy;&lcy; &pcy;&acy;&kcy;&iecy;&tcy;&acy; &vcy;&iecy;&rcy;&scy;&icy;&icy; 2 &icy;&lcy;&icy; &vcy;&ycy;&shcy;&iecy;. &IEcy;&scy;&lcy;&icy; &fcy;&acy;&jcy;&lcy; &ncy;&iecy; &yacy;&vcy;&lcy;&yacy;&iecy;&tcy;&scy;&yacy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&mcy;, &ocy;&ncy; &acy;&ncy;&acy;&lcy;&icy;&zcy;&icy;&rcy;&ucy;&iecy;&tcy;&scy;&yacy; &kcy;&acy;&kcy; &ocy;&bcy;&ycy;&chcy;&ncy;&ycy;&jcy; &tcy;&iecy;&kcy;&scy;&tcy;&ocy;&vcy;&ycy;&jcy; &fcy;&acy;&jcy;&lcy; &scy; &pcy;&ocy;&mcy;&ocy;&shchcy;&softcy;&yucy; &acy;&ncy;&acy;&lcy;&icy;&zcy;&acy;&tcy;&ocy;&rcy;&acy; &kcy;&ocy;&ncy;&fcy;&icy;&gcy;&ucy;&rcy;&acy;&tscy;&icy;&icy;  Git . &Ocy;&zhcy;&icy;&dcy;&acy;&iecy;&tcy;&scy;&yacy;, &chcy;&tcy;&ocy; &pcy;&acy;&rcy;&ycy; &kcy;&lcy;&yucy;&chcy;-&zcy;&ncy;&acy;&chcy;&iecy;&ncy;&icy;&iecy; &vcy; &ecy;&tcy;&ocy;&mcy; &fcy;&acy;&jcy;&lcy;&iecy; &kcy;&ocy;&ncy;&fcy;&icy;&gcy;&ucy;&rcy;&acy;&tscy;&icy;&icy; &bcy;&ucy;&dcy;&ucy;&tcy; &ocy;&pcy;&icy;&scy;&ycy;&vcy;&acy;&tcy;&softcy; &scy;&pcy;&icy;&scy;&ocy;&kcy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy;. &IEcy;&scy;&lcy;&icy; &ncy;&icy; &ocy;&dcy;&ncy;&acy; &icy;&zcy; &ecy;&tcy;&icy;&khcy; &pcy;&ocy;&pcy;&ycy;&tcy;&ocy;&kcy; &acy;&ncy;&acy;&lcy;&icy;&zcy;&acy; &ncy;&iecy; &ucy;&vcy;&iecy;&ncy;&chcy;&acy;&lcy;&acy;&scy;&softcy; &ucy;&scy;&pcy;&iecy;&khcy;&ocy;&mcy;,  Git  &scy;&ocy;&ocy;&bcy;&shchcy;&icy;&tcy; &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&yucy; &ocy;&bcy; &ocy;&shcy;&icy;&bcy;&kcy;&iecy;, &chcy;&tcy;&ocy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &pcy;&rcy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&vcy;&icy;&lcy; &ocy;&shcy;&icy;&bcy;&ocy;&chcy;&ncy;&ycy;&iecy; &dcy;&acy;&ncy;&ncy;&ycy;&iecy;.</span></p> <p><span data-i18n="464b166bfc207fe25b10529db83e57885e0792766636083d1872bd11f029c4f4/86" data-source="Any other data provided by the server is considered erroneous." onmousemove="i18n(this)">&Lcy;&yucy;&bcy;&ycy;&iecy; &dcy;&rcy;&ucy;&gcy;&icy;&iecy; &dcy;&acy;&ncy;&ncy;&ycy;&iecy;, &pcy;&rcy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&vcy;&lcy;&iecy;&ncy;&ncy;&ycy;&iecy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ocy;&mcy;, &scy;&chcy;&icy;&tcy;&acy;&yucy;&tcy;&scy;&yacy; &ocy;&shcy;&icy;&bcy;&ocy;&chcy;&ncy;&ycy;&mcy;&icy;.</span></p> </div> <h2 class="text-body-emphasis"  id="_bundle_lists"><span data-i18n="34ea81ae10d2f4c5665ecb7b5d06b0ccd2af5b0c9fb37f4e361e85fda431807e/92" data-source="Bundle lists" onmousemove="i18n(this)">Bundle lists</span></h2> <div> <p><span data-i18n="b34dafe12da7fed454317815f64ce3cda5769154d42454538867cc9cec4d04a7/ca" data-source="The Git server can advertise bundle URIs using a set of &lt;code&gt;key=value&lt;/code&gt; pairs. A bundle URI can also serve a plain-text file in the Git config format containing these same &lt;code&gt;key=value&lt;/code&gt; pairs. In both cases, we consider this to be a &lt;code&gt;bundle list&lt;/code&gt;. The pairs specify information about the bundles that the client can use to make decisions for which bundles to download and which to ignore." onmousemove="i18n(this)">&Scy;&iecy;&rcy;&vcy;&iecy;&rcy;  Git  &mcy;&ocy;&zhcy;&iecy;&tcy; &ocy;&bcy;&hardcy;&yacy;&vcy;&lcy;&yacy;&tcy;&softcy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy;, &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&yacy; &ncy;&acy;&bcy;&ocy;&rcy; &pcy;&acy;&rcy;  <code>key=value</code> . URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &tcy;&acy;&kcy;&zhcy;&iecy; &mcy;&ocy;&zhcy;&iecy;&tcy; &ocy;&bcy;&scy;&lcy;&ucy;&zhcy;&icy;&vcy;&acy;&tcy;&softcy; &pcy;&rcy;&ocy;&scy;&tcy;&ocy;&jcy; &tcy;&iecy;&kcy;&scy;&tcy;&ocy;&vcy;&ycy;&jcy; &fcy;&acy;&jcy;&lcy; &vcy; &fcy;&ocy;&rcy;&mcy;&acy;&tcy;&iecy; &kcy;&ocy;&ncy;&fcy;&icy;&gcy;&ucy;&rcy;&acy;&tscy;&icy;&icy;  Git , &scy;&ocy;&dcy;&iecy;&rcy;&zhcy;&acy;&shchcy;&icy;&jcy; &tcy;&iecy; &zhcy;&iecy; &scy;&acy;&mcy;&ycy;&iecy; &pcy;&acy;&rcy;&ycy;  <code>key=value</code> . &Vcy; &ocy;&bcy;&ocy;&icy;&khcy; &scy;&lcy;&ucy;&chcy;&acy;&yacy;&khcy; &mcy;&ycy; &scy;&chcy;&icy;&tcy;&acy;&iecy;&mcy; &ecy;&tcy;&ocy;  <code>bundle list</code> . &Pcy;&acy;&rcy;&ycy; &ocy;&pcy;&rcy;&iecy;&dcy;&iecy;&lcy;&yacy;&yucy;&tcy; &icy;&ncy;&fcy;&ocy;&rcy;&mcy;&acy;&tscy;&icy;&yucy; &ocy; &pcy;&acy;&kcy;&iecy;&tcy;&acy;&khcy;, &kcy;&ocy;&tcy;&ocy;&rcy;&ucy;&yucy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy; &dcy;&lcy;&yacy; &pcy;&rcy;&icy;&ncy;&yacy;&tcy;&icy;&yacy; &rcy;&iecy;&shcy;&iecy;&ncy;&icy;&yacy;, &kcy;&acy;&kcy;&icy;&iecy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy; &zcy;&acy;&gcy;&rcy;&ucy;&zhcy;&acy;&tcy;&softcy;, &acy; &kcy;&acy;&kcy;&icy;&iecy; &icy;&gcy;&ncy;&ocy;&rcy;&icy;&rcy;&ocy;&vcy;&acy;&tcy;&softcy;.</span></p> <p><span data-i18n="6c0f9fe0bc0417fb23975f22c1e42950e6093425c22b9f9de8b6d584c1851baa/16" data-source="A few keys focus on properties of the list itself." onmousemove="i18n(this)">&Ncy;&iecy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&ocy; &kcy;&lcy;&yucy;&chcy;&iecy;&jcy; &pcy;&ocy;&scy;&vcy;&yacy;&shchcy;&iecy;&ncy;&ycy; &scy;&vcy;&ocy;&jcy;&scy;&tcy;&vcy;&acy;&mcy; &scy;&acy;&mcy;&ocy;&gcy;&ocy; &scy;&pcy;&icy;&scy;&kcy;&acy;.</span></p> <div> <dl> <dt id="Documentation/technical/bundle-uri.txt-bundleversion"><span data-i18n="bcd40597f1302be9a015b26b07017df32ab2f07e9e81db08a0fdddeffbb64d91/7e" data-source="bundle.version" onmousemove="i18n(this)">bundle.version</span></dt> <dd> <p><span data-i18n="5b196ac3de36ea51d7e46e99c441c1db7b0a66489b78be288fc8ac381ae6d6e3/36" data-source="(Required) This value provides a version number for the bundle list. If a future Git change enables a feature that needs the Git client to react to a new key in the bundle list file, then this version will increment. The only current version number is 1, and if any other value is specified then Git will fail to use this file." onmousemove="i18n(this)">(&Ocy;&bcy;&yacy;&zcy;&acy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;) &Ecy;&tcy;&ocy; &zcy;&ncy;&acy;&chcy;&iecy;&ncy;&icy;&iecy; &pcy;&rcy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&vcy;&lcy;&yacy;&iecy;&tcy; &ncy;&ocy;&mcy;&iecy;&rcy; &vcy;&iecy;&rcy;&scy;&icy;&icy; &scy;&pcy;&icy;&scy;&kcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;. &IEcy;&scy;&lcy;&icy; &bcy;&ucy;&dcy;&ucy;&shchcy;&iecy;&iecy; &icy;&zcy;&mcy;&iecy;&ncy;&iecy;&ncy;&icy;&iecy;  Git  &acy;&kcy;&tcy;&icy;&vcy;&icy;&rcy;&ucy;&iecy;&tcy; &fcy;&ucy;&ncy;&kcy;&tscy;&icy;&yucy;, &tcy;&rcy;&iecy;&bcy;&ucy;&yucy;&shchcy;&ucy;&yucy;, &chcy;&tcy;&ocy;&bcy;&ycy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;  Git  &rcy;&iecy;&acy;&gcy;&icy;&rcy;&ocy;&vcy;&acy;&lcy; &ncy;&acy; &ncy;&ocy;&vcy;&ycy;&jcy; &kcy;&lcy;&yucy;&chcy; &vcy; &fcy;&acy;&jcy;&lcy;&iecy; &scy;&pcy;&icy;&scy;&kcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;, &tcy;&ocy; &ecy;&tcy;&acy; &vcy;&iecy;&rcy;&scy;&icy;&yacy; &bcy;&ucy;&dcy;&iecy;&tcy; &ucy;&vcy;&iecy;&lcy;&icy;&chcy;&icy;&vcy;&acy;&tcy;&softcy;&scy;&yacy;. &IEcy;&dcy;&icy;&ncy;&scy;&tcy;&vcy;&iecy;&ncy;&ncy;&ycy;&jcy; &tcy;&iecy;&kcy;&ucy;&shchcy;&icy;&jcy; &ncy;&ocy;&mcy;&iecy;&rcy; &vcy;&iecy;&rcy;&scy;&icy;&icy; &mdash; 1, &icy; &iecy;&scy;&lcy;&icy; &ucy;&kcy;&acy;&zcy;&acy;&ncy;&ocy; &lcy;&yucy;&bcy;&ocy;&iecy; &dcy;&rcy;&ucy;&gcy;&ocy;&iecy; &zcy;&ncy;&acy;&chcy;&iecy;&ncy;&icy;&iecy;,  Git  &ncy;&iecy; &scy;&mcy;&ocy;&zhcy;&iecy;&tcy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy; &ecy;&tcy;&ocy;&tcy; &fcy;&acy;&jcy;&lcy;.</span></p> </dd> <dt id="Documentation/technical/bundle-uri.txt-bundlemode"><span data-i18n="b0349e2123d2fc049ab6306eb7ac85bfb997aef1e982c0c027141fcd9beafe83/e6" data-source="bundle.mode" onmousemove="i18n(this)">bundle.mode</span></dt> <dd> <p><span data-i18n="511b68c304ce2561b9947f089eedcb02c89207f54683ac137a83d8268bc2aa68/48" data-source="(Required) This value has one of two values: &lt;code&gt;all&lt;/code&gt; and &lt;code&gt;any&lt;/code&gt;. When &lt;code&gt;all&lt;/code&gt; is specified, then the client should expect to need all of the listed bundle URIs that match their repository&amp;rsquo;s requirements. When &lt;code&gt;any&lt;/code&gt; is specified, then the client should expect that any one of the bundle URIs that match their repository&amp;rsquo;s requirements will suffice. Typically, the &lt;code&gt;any&lt;/code&gt; option is used to list a number of different bundle servers located in different geographies." onmousemove="i18n(this)">(&Ocy;&bcy;&yacy;&zcy;&acy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;) &Ecy;&tcy;&ocy; &zcy;&ncy;&acy;&chcy;&iecy;&ncy;&icy;&iecy; &icy;&mcy;&iecy;&iecy;&tcy; &ocy;&dcy;&ncy;&ocy; &icy;&zcy; &dcy;&vcy;&ucy;&khcy; &zcy;&ncy;&acy;&chcy;&iecy;&ncy;&icy;&jcy;:  <code>all</code>  &icy;  <code>any</code>  . &IEcy;&scy;&lcy;&icy; &ucy;&kcy;&acy;&zcy;&acy;&ncy;  <code>all</code> , &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&ucy; &scy;&lcy;&iecy;&dcy;&ucy;&iecy;&tcy; &ocy;&zhcy;&icy;&dcy;&acy;&tcy;&softcy;, &chcy;&tcy;&ocy; &iecy;&mcy;&ucy; &pcy;&ocy;&tcy;&rcy;&iecy;&bcy;&ucy;&yucy;&tcy;&scy;&yacy; &vcy;&scy;&iecy; &pcy;&iecy;&rcy;&iecy;&chcy;&icy;&scy;&lcy;&iecy;&ncy;&ncy;&ycy;&iecy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy;, &scy;&ocy;&ocy;&tcy;&vcy;&iecy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&iecy; &tcy;&rcy;&iecy;&bcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy;&mcy; &iecy;&gcy;&ocy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&yacy;. &IEcy;&scy;&lcy;&icy; &ucy;&kcy;&acy;&zcy;&acy;&ncy;  <code>any</code> , &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &dcy;&ocy;&lcy;&zhcy;&iecy;&ncy; &ocy;&zhcy;&icy;&dcy;&acy;&tcy;&softcy;, &chcy;&tcy;&ocy; &bcy;&ucy;&dcy;&iecy;&tcy; &dcy;&ocy;&scy;&tcy;&acy;&tcy;&ocy;&chcy;&ncy;&ocy; &lcy;&yucy;&bcy;&ocy;&gcy;&ocy; &icy;&zcy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy;, &scy;&ocy;&ocy;&tcy;&vcy;&iecy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&iecy;&gcy;&ocy; &tcy;&rcy;&iecy;&bcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy;&mcy; &iecy;&gcy;&ocy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&yacy;. &Ocy;&bcy;&ycy;&chcy;&ncy;&ocy; &ocy;&pcy;&tscy;&icy;&yacy;  <code>any</code>  &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&iecy;&tcy;&scy;&yacy; &dcy;&lcy;&yacy; &pcy;&iecy;&rcy;&iecy;&chcy;&icy;&scy;&lcy;&iecy;&ncy;&icy;&yacy; &ncy;&iecy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&icy;&khcy; &rcy;&acy;&zcy;&lcy;&icy;&chcy;&ncy;&ycy;&khcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ocy;&vcy; &pcy;&acy;&kcy;&iecy;&tcy;&acy;, &rcy;&acy;&scy;&pcy;&ocy;&lcy;&ocy;&zhcy;&iecy;&ncy;&ncy;&ycy;&khcy; &vcy; &rcy;&acy;&zcy;&ncy;&ycy;&khcy; &rcy;&iecy;&gcy;&icy;&ocy;&ncy;&acy;&khcy;.</span></p> </dd> <dt id="Documentation/technical/bundle-uri.txt-bundleheuristic"><span data-i18n="869094784bf594dfd3f89cc37294b9efc114e112f00c1354a608bf2204914a24/4e" data-source="bundle.heuristic" onmousemove="i18n(this)">bundle.heuristic</span></dt> <dd> <p><span data-i18n="e61daec4bdd9b0e3381b60d4f1ea29f657bbc5f07f0ed1afa84d4b82a46ae881/94" data-source="If this string-valued key exists, then the bundle list is designed to work well with incremental &lt;code&gt;git fetch&lt;/code&gt; commands. The heuristic signals that there are additional keys available for each bundle that help determine which subset of bundles the client should download. The only heuristic currently planned is &lt;code&gt;creationToken&lt;/code&gt;." onmousemove="i18n(this)">&IEcy;&scy;&lcy;&icy; &ecy;&tcy;&ocy;&tcy; &kcy;&lcy;&yucy;&chcy; &scy;&ocy; &scy;&tcy;&rcy;&ocy;&kcy;&ocy;&vcy;&ycy;&mcy; &zcy;&ncy;&acy;&chcy;&iecy;&ncy;&icy;&iecy;&mcy; &scy;&ucy;&shchcy;&iecy;&scy;&tcy;&vcy;&ucy;&iecy;&tcy;, &tcy;&ocy; &scy;&pcy;&icy;&scy;&ocy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &pcy;&rcy;&iecy;&dcy;&ncy;&acy;&zcy;&ncy;&acy;&chcy;&iecy;&ncy; &dcy;&lcy;&yacy; &khcy;&ocy;&rcy;&ocy;&shcy;&iecy;&jcy; &rcy;&acy;&bcy;&ocy;&tcy;&ycy; &scy; &icy;&ncy;&kcy;&rcy;&iecy;&mcy;&iecy;&ncy;&tcy;&ncy;&ycy;&mcy;&icy; &kcy;&ocy;&mcy;&acy;&ncy;&dcy;&acy;&mcy;&icy;  <code>git fetch</code> . &Ecy;&vcy;&rcy;&icy;&scy;&tcy;&icy;&kcy;&acy; &scy;&icy;&gcy;&ncy;&acy;&lcy;&icy;&zcy;&icy;&rcy;&ucy;&iecy;&tcy; &ocy; &tcy;&ocy;&mcy;, &chcy;&tcy;&ocy; &dcy;&lcy;&yacy; &kcy;&acy;&zhcy;&dcy;&ocy;&gcy;&ocy; &pcy;&acy;&kcy;&iecy;&tcy;&acy; &dcy;&ocy;&scy;&tcy;&ucy;&pcy;&ncy;&ycy; &dcy;&ocy;&pcy;&ocy;&lcy;&ncy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ycy;&iecy; &kcy;&lcy;&yucy;&chcy;&icy;, &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&iecy; &pcy;&ocy;&mcy;&ocy;&gcy;&acy;&yucy;&tcy; &ocy;&pcy;&rcy;&iecy;&dcy;&iecy;&lcy;&icy;&tcy;&softcy;, &kcy;&acy;&kcy;&ocy;&iecy; &pcy;&ocy;&dcy;&mcy;&ncy;&ocy;&zhcy;&iecy;&scy;&tcy;&vcy;&ocy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &scy;&lcy;&iecy;&dcy;&ucy;&iecy;&tcy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&icy;&tcy;&softcy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&ucy;. &IEcy;&dcy;&icy;&ncy;&scy;&tcy;&vcy;&iecy;&ncy;&ncy;&acy;&yacy; &zcy;&acy;&pcy;&lcy;&acy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&ncy;&acy;&yacy; &ncy;&acy; &dcy;&acy;&ncy;&ncy;&ycy;&jcy; &mcy;&ocy;&mcy;&iecy;&ncy;&tcy; &ecy;&vcy;&rcy;&icy;&scy;&tcy;&icy;&kcy;&acy; &mdash;  <code>creationToken</code> .</span></p> </dd> </dl> </div> <p><span data-i18n="3d91e959ea43b4fe0155350633dc0c1dc77abf99baad45d2dc09236f42571fc6/b1" data-source="The remaining keys include an &lt;code&gt;&amp;lt;id&amp;gt;&lt;/code&gt; segment which is a server-designated name for each available bundle. The &lt;code&gt;&amp;lt;id&amp;gt;&lt;/code&gt; must contain only alphanumeric and &lt;code&gt;-&lt;/code&gt; characters." onmousemove="i18n(this)">&Ocy;&scy;&tcy;&acy;&lcy;&softcy;&ncy;&ycy;&iecy; &kcy;&lcy;&yucy;&chcy;&icy; &vcy;&kcy;&lcy;&yucy;&chcy;&acy;&yucy;&tcy; &scy;&iecy;&gcy;&mcy;&iecy;&ncy;&tcy;  <code>&lt;id&gt;</code> , &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&jcy; &pcy;&rcy;&iecy;&dcy;&scy;&tcy;&acy;&vcy;&lcy;&yacy;&iecy;&tcy; &scy;&ocy;&bcy;&ocy;&jcy; &ncy;&acy;&zcy;&ncy;&acy;&chcy;&iecy;&ncy;&ncy;&ocy;&iecy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ocy;&mcy; &icy;&mcy;&yacy; &dcy;&lcy;&yacy; &kcy;&acy;&zhcy;&dcy;&ocy;&gcy;&ocy; &dcy;&ocy;&scy;&tcy;&ucy;&pcy;&ncy;&ocy;&gcy;&ocy; &pcy;&acy;&kcy;&iecy;&tcy;&acy;.  <code>&lt;id&gt;</code>  &dcy;&ocy;&lcy;&zhcy;&iecy;&ncy; &scy;&ocy;&dcy;&iecy;&rcy;&zhcy;&acy;&tcy;&softcy; &tcy;&ocy;&lcy;&softcy;&kcy;&ocy; &bcy;&ucy;&kcy;&vcy;&iecy;&ncy;&ncy;&ocy;-&tscy;&icy;&fcy;&rcy;&ocy;&vcy;&ycy;&iecy; &scy;&icy;&mcy;&vcy;&ocy;&lcy;&ycy; &icy; &scy;&icy;&mcy;&vcy;&ocy;&lcy;&ycy;  <code>-</code> .</span></p> <div> <dl> <dt id="Documentation/technical/bundle-uri.txt-bundleltidgturi"><span data-i18n="1020751ccde34e8f5d936b462982b1e21f2773045bd5014b3c4edf3d7f670645/89" data-source="bundle.&amp;lt;id&amp;gt;.uri" onmousemove="i18n(this)">bundle.&lt;id&gt;.uri</span></dt> <dd> <p><span data-i18n="84697beb263707c313454d20ce1bd45d1cce345837e06114bedb6b387391772e/b2" data-source="(Required) This string value is the URI for downloading bundle &lt;code&gt;&amp;lt;id&amp;gt;&lt;/code&gt;. If the URI begins with a protocol (&lt;code&gt;http://&lt;/code&gt; or &lt;code&gt;https://&lt;/code&gt;) then the URI is absolute. Otherwise, the URI is interpreted as relative to the URI used for the bundle list. If the URI begins with &lt;code&gt;/&lt;/code&gt;, then that relative path is relative to the domain name used for the bundle list. (This use of relative paths is intended to make it easier to distribute a set of bundles across a large number of servers or CDNs with different domain names.)" onmousemove="i18n(this)">(&Ocy;&bcy;&yacy;&zcy;&acy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;) &Ecy;&tcy;&ocy; &scy;&tcy;&rcy;&ocy;&kcy;&ocy;&vcy;&ocy;&iecy; &zcy;&ncy;&acy;&chcy;&iecy;&ncy;&icy;&iecy; &yacy;&vcy;&lcy;&yacy;&iecy;&tcy;&scy;&yacy; URI &dcy;&lcy;&yacy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&icy; &pcy;&acy;&kcy;&iecy;&tcy;&acy;  <code>&lt;id&gt;</code> . &IEcy;&scy;&lcy;&icy; URI &ncy;&acy;&chcy;&icy;&ncy;&acy;&iecy;&tcy;&scy;&yacy; &scy; &pcy;&rcy;&ocy;&tcy;&ocy;&kcy;&ocy;&lcy;&acy; (  <code>http://</code>  &icy;&lcy;&icy;  <code>https://</code>  ), &tcy;&ocy;&gcy;&dcy;&acy; URI &yacy;&vcy;&lcy;&yacy;&iecy;&tcy;&scy;&yacy; &acy;&bcy;&scy;&ocy;&lcy;&yucy;&tcy;&ncy;&ycy;&mcy;. &Vcy; &pcy;&rcy;&ocy;&tcy;&icy;&vcy;&ncy;&ocy;&mcy; &scy;&lcy;&ucy;&chcy;&acy;&iecy; URI &icy;&ncy;&tcy;&iecy;&rcy;&pcy;&rcy;&iecy;&tcy;&icy;&rcy;&ucy;&iecy;&tcy;&scy;&yacy; &kcy;&acy;&kcy; &ocy;&tcy;&ncy;&ocy;&scy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ycy;&jcy; URI, &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&iecy;&mcy;&ycy;&jcy; &dcy;&lcy;&yacy; &scy;&pcy;&icy;&scy;&kcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;. &IEcy;&scy;&lcy;&icy; URI &ncy;&acy;&chcy;&icy;&ncy;&acy;&iecy;&tcy;&scy;&yacy; &scy;  <code>/</code>  , &tcy;&ocy; &ecy;&tcy;&ocy;&tcy; &ocy;&tcy;&ncy;&ocy;&scy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ycy;&jcy; &pcy;&ucy;&tcy;&softcy; &ocy;&tcy;&ncy;&ocy;&scy;&icy;&tcy;&scy;&yacy; &kcy; &icy;&mcy;&iecy;&ncy;&icy; &dcy;&ocy;&mcy;&iecy;&ncy;&acy;, &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&iecy;&mcy;&ocy;&mcy;&ucy; &dcy;&lcy;&yacy; &scy;&pcy;&icy;&scy;&kcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;. (&Tcy;&acy;&kcy;&ocy;&iecy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&ncy;&icy;&iecy; &ocy;&tcy;&ncy;&ocy;&scy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ycy;&khcy; &pcy;&ucy;&tcy;&iecy;&jcy; &pcy;&rcy;&iecy;&dcy;&ncy;&acy;&zcy;&ncy;&acy;&chcy;&iecy;&ncy;&ocy; &dcy;&lcy;&yacy; &ucy;&pcy;&rcy;&ocy;&shchcy;&iecy;&ncy;&icy;&yacy; &rcy;&acy;&scy;&pcy;&rcy;&ocy;&scy;&tcy;&rcy;&acy;&ncy;&iecy;&ncy;&icy;&yacy; &ncy;&acy;&bcy;&ocy;&rcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &pcy;&ocy; &bcy;&ocy;&lcy;&softcy;&shcy;&ocy;&mcy;&ucy; &kcy;&ocy;&lcy;&icy;&chcy;&iecy;&scy;&tcy;&vcy;&ucy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ocy;&vcy; &icy;&lcy;&icy; CDN &scy; &rcy;&acy;&zcy;&ncy;&ycy;&mcy;&icy; &dcy;&ocy;&mcy;&iecy;&ncy;&ncy;&ycy;&mcy;&icy; &icy;&mcy;&iecy;&ncy;&acy;&mcy;&icy;.)</span></p> </dd> <dt id="Documentation/technical/bundle-uri.txt-bundleltidgtfilter"><span data-i18n="21251f14bec63428570a856ef19e38af3c887e0bd7043511763bbe5bd3d12774/d1" data-source="bundle.&amp;lt;id&amp;gt;.filter" onmousemove="i18n(this)">bundle.&lt;id&gt;.filter</span></dt> <dd> <p><span data-i18n="5f1372fac85d0ed23f56f41eed2ba5712536da6c746ca1b100e65b8fbf21be07/9c" data-source="This string value represents an object filter that should also appear in the header of this bundle. The server uses this value to differentiate different kinds of bundles from which the client can choose those that match their object filters." onmousemove="i18n(this)">&Ecy;&tcy;&ocy; &scy;&tcy;&rcy;&ocy;&kcy;&ocy;&vcy;&ocy;&iecy; &zcy;&ncy;&acy;&chcy;&iecy;&ncy;&icy;&iecy; &pcy;&rcy;&iecy;&dcy;&scy;&tcy;&acy;&vcy;&lcy;&yacy;&iecy;&tcy; &fcy;&icy;&lcy;&softcy;&tcy;&rcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;, &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&jcy; &tcy;&acy;&kcy;&zhcy;&iecy; &dcy;&ocy;&lcy;&zhcy;&iecy;&ncy; &pcy;&ocy;&yacy;&vcy;&icy;&tcy;&softcy;&scy;&yacy; &vcy; &zcy;&acy;&gcy;&ocy;&lcy;&ocy;&vcy;&kcy;&iecy; &ecy;&tcy;&ocy;&gcy;&ocy; &pcy;&acy;&kcy;&iecy;&tcy;&acy;. &Scy;&iecy;&rcy;&vcy;&iecy;&rcy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&iecy;&tcy; &ecy;&tcy;&ocy; &zcy;&ncy;&acy;&chcy;&iecy;&ncy;&icy;&iecy; &dcy;&lcy;&yacy; &rcy;&acy;&zcy;&lcy;&icy;&chcy;&iecy;&ncy;&icy;&yacy; &rcy;&acy;&zcy;&lcy;&icy;&chcy;&ncy;&ycy;&khcy; &tcy;&icy;&pcy;&ocy;&vcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;, &icy;&zcy; &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&khcy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &vcy;&ycy;&bcy;&icy;&rcy;&acy;&tcy;&softcy; &tcy;&iecy;, &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&iecy; &scy;&ocy;&ocy;&tcy;&vcy;&iecy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&tcy; &iecy;&gcy;&ocy; &fcy;&icy;&lcy;&softcy;&tcy;&rcy;&acy;&mcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;.</span></p> </dd> <dt id="Documentation/technical/bundle-uri.txt-bundleltidgtcreationToken"><span data-i18n="a472583a8e15662687fd412cbdf4f19f115bff33b7f7ce985207b124226c8704/3a" data-source="bundle.&amp;lt;id&amp;gt;.creationToken" onmousemove="i18n(this)">bundle.&lt;id&gt;.creationToken</span></dt> <dd> <p><span data-i18n="f51964b44a191bf267988839d897f0bdfe60c2c852390c246989f1a6d5b28339/aa" data-source="This value is a nonnegative 64-bit integer used for sorting the bundles list. This is used to download a subset of bundles during a fetch when &lt;code&gt;bundle.heuristic=creationToken&lt;/code&gt;." onmousemove="i18n(this)">&Ecy;&tcy;&ocy; &zcy;&ncy;&acy;&chcy;&iecy;&ncy;&icy;&iecy; &pcy;&rcy;&iecy;&dcy;&scy;&tcy;&acy;&vcy;&lcy;&yacy;&iecy;&tcy; &scy;&ocy;&bcy;&ocy;&jcy; &ncy;&iecy;&ocy;&tcy;&rcy;&icy;&tscy;&acy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;&iecy; 64-&bcy;&icy;&tcy;&ncy;&ocy;&iecy; &tscy;&iecy;&lcy;&ocy;&iecy; &chcy;&icy;&scy;&lcy;&ocy;, &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&iecy;&mcy;&ocy;&iecy; &dcy;&lcy;&yacy; &scy;&ocy;&rcy;&tcy;&icy;&rcy;&ocy;&vcy;&kcy;&icy; &scy;&pcy;&icy;&scy;&kcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;. &Ecy;&tcy;&ocy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&iecy;&tcy;&scy;&yacy; &dcy;&lcy;&yacy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&icy; &pcy;&ocy;&dcy;&mcy;&ncy;&ocy;&zhcy;&iecy;&scy;&tcy;&vcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &vcy;&ocy; &vcy;&rcy;&iecy;&mcy;&yacy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&icy;, &kcy;&ocy;&gcy;&dcy;&acy;  <code>bundle.heuristic=creationToken</code>  .</span></p> </dd> <dt id="Documentation/technical/bundle-uri.txt-bundleltidgtlocation"><span data-i18n="7fa9c224a948da66acfca9a1ba52e72c291082b9b3c67bd418dfbab03571e3a9/9e" data-source="bundle.&amp;lt;id&amp;gt;.location" onmousemove="i18n(this)">bundle.&lt;id&gt;.location</span></dt> <dd> <p><span data-i18n="2ac9fefdddb6c46117278258d4101c4aafe6effefd7d9838be8669bdbd676fe7/6a" data-source="This string value advertises a real-world location from where the bundle URI is served. This can be used to present the user with an option for which bundle URI to use or simply as an informative indicator of which bundle URI was selected by Git. This is only valuable when &lt;code&gt;bundle.mode&lt;/code&gt; is &lt;code&gt;any&lt;/code&gt;." onmousemove="i18n(this)">&Ecy;&tcy;&ocy; &scy;&tcy;&rcy;&ocy;&kcy;&ocy;&vcy;&ocy;&iecy; &zcy;&ncy;&acy;&chcy;&iecy;&ncy;&icy;&iecy; &ocy;&bcy;&hardcy;&yacy;&vcy;&lcy;&yacy;&iecy;&tcy; &rcy;&iecy;&acy;&lcy;&softcy;&ncy;&ocy;&iecy; &mcy;&iecy;&scy;&tcy;&ocy;&pcy;&ocy;&lcy;&ocy;&zhcy;&iecy;&ncy;&icy;&iecy;, &ocy;&tcy;&kcy;&ucy;&dcy;&acy; &ocy;&bcy;&scy;&lcy;&ucy;&zhcy;&icy;&vcy;&acy;&iecy;&tcy;&scy;&yacy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy;. &Ecy;&tcy;&ocy; &mcy;&ocy;&zhcy;&ncy;&ocy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy;, &chcy;&tcy;&ocy;&bcy;&ycy; &pcy;&rcy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&vcy;&icy;&tcy;&softcy; &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&yucy; &vcy;&ocy;&zcy;&mcy;&ocy;&zhcy;&ncy;&ocy;&scy;&tcy;&softcy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &icy;&lcy;&icy; &pcy;&rcy;&ocy;&scy;&tcy;&ocy; &vcy; &kcy;&acy;&chcy;&iecy;&scy;&tcy;&vcy;&iecy; &icy;&ncy;&fcy;&ocy;&rcy;&mcy;&acy;&tcy;&icy;&vcy;&ncy;&ocy;&gcy;&ocy; &icy;&ncy;&dcy;&icy;&kcy;&acy;&tcy;&ocy;&rcy;&acy; &tcy;&ocy;&gcy;&ocy;, &kcy;&acy;&kcy;&ocy;&jcy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &bcy;&ycy;&lcy; &vcy;&ycy;&bcy;&rcy;&acy;&ncy; Git. &Ecy;&tcy;&ocy; &pcy;&ocy;&lcy;&iecy;&zcy;&ncy;&ocy; &tcy;&ocy;&lcy;&softcy;&kcy;&ocy; &vcy; &tcy;&ocy;&mcy; &scy;&lcy;&ucy;&chcy;&acy;&iecy;, &iecy;&scy;&lcy;&icy;  <code>bundle.mode</code>  &rcy;&acy;&vcy;&iecy;&ncy;  <code>any</code> .</span></p> </dd> </dl> </div> <p><span data-i18n="aeae5234076b0a359bf046bd3ca9375240e02c852e317b0e6c098d28abccea8c/c7" data-source="Here is an example bundle list using the Git config format:" onmousemove="i18n(this)">&Vcy;&ocy;&tcy; &pcy;&rcy;&icy;&mcy;&iecy;&rcy; &scy;&pcy;&icy;&scy;&kcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &scy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&ncy;&icy;&iecy;&mcy; &fcy;&ocy;&rcy;&mcy;&acy;&tcy;&acy; &kcy;&ocy;&ncy;&fcy;&icy;&gcy;&ucy;&rcy;&acy;&tscy;&icy;&icy;  Git :</span></p> <div> <div> <pre class="hljs language-ini"><span class="hljs-section">[bundle]</span>
        <span class="hljs-attr">version</span> = <span class="hljs-number">1</span>
        <span class="hljs-attr">mode</span> = all
        <span class="hljs-attr">heuristic</span> = creationToken</pre> </div> </div> <div> <div> <pre class="hljs language-ini"><span class="hljs-section">[bundle &quot;2022-02-09-1644442601-daily&quot;]</span>
        <span class="hljs-attr">uri</span> = https://bundles.example.com/git/git/<span class="hljs-number">2022</span>-<span class="hljs-number">02</span>-<span class="hljs-number">09</span>-<span class="hljs-number">1644442601</span>-daily.bundle
        <span class="hljs-attr">creationToken</span> = <span class="hljs-number">1644442601</span></pre> </div> </div> <div> <div> <pre class="hljs language-ini"><span class="hljs-section">[bundle &quot;2022-02-02-1643842562&quot;]</span>
        <span class="hljs-attr">uri</span> = https://bundles.example.com/git/git/<span class="hljs-number">2022</span>-<span class="hljs-number">02</span>-<span class="hljs-number">02</span>-<span class="hljs-number">1643842562</span>.bundle
        <span class="hljs-attr">creationToken</span> = <span class="hljs-number">1643842562</span></pre> </div> </div> <div> <div> <pre class="hljs language-ini"><span class="hljs-section">[bundle &quot;2022-02-09-1644442631-daily-blobless&quot;]</span>
        <span class="hljs-attr">uri</span> = <span class="hljs-number">2022</span>-<span class="hljs-number">02</span>-<span class="hljs-number">09</span>-<span class="hljs-number">1644442631</span>-daily-blobless.bundle
        <span class="hljs-attr">creationToken</span> = <span class="hljs-number">1644442631</span>
        <span class="hljs-attr">filter</span> = blob:none</pre> </div> </div> <div> <div> <pre class="hljs language-ini"><span class="hljs-section">[bundle &quot;2022-02-02-1643842568-blobless&quot;]</span>
        <span class="hljs-attr">uri</span> = /git/git/<span class="hljs-number">2022</span>-<span class="hljs-number">02</span>-<span class="hljs-number">02</span>-<span class="hljs-number">1643842568</span>-blobless.bundle
        <span class="hljs-attr">creationToken</span> = <span class="hljs-number">1643842568</span>
        <span class="hljs-attr">filter</span> = blob:none</pre> </div> </div> <p><span data-i18n="87c32fca8ba20dc426eae57070c38e99888e0d8d952eb76f84004f3a5d7ecb12/ce" data-source="This example uses &lt;code&gt;bundle.mode=all&lt;/code&gt; as well as the &lt;code&gt;bundle.&amp;lt;id&amp;gt;.creationToken&lt;/code&gt; heuristic. It also uses the &lt;code&gt;bundle.&amp;lt;id&amp;gt;.filter&lt;/code&gt; options to present two parallel sets of bundles: one for full clones and another for blobless partial clones." onmousemove="i18n(this)">&Vcy; &ecy;&tcy;&ocy;&mcy; &pcy;&rcy;&icy;&mcy;&iecy;&rcy;&iecy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&iecy;&tcy;&scy;&yacy;  <code>bundle.mode=all</code> , &acy; &tcy;&acy;&kcy;&zhcy;&iecy; &ecy;&vcy;&rcy;&icy;&scy;&tcy;&icy;&kcy;&acy;  <code>bundle.&lt;id&gt;.creationToken</code> . &Ocy;&ncy; &tcy;&acy;&kcy;&zhcy;&iecy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&iecy;&tcy; &pcy;&acy;&rcy;&acy;&mcy;&iecy;&tcy;&rcy;&ycy;  <code>bundle.&lt;id&gt;.filter</code>  &dcy;&lcy;&yacy; &pcy;&rcy;&iecy;&dcy;&scy;&tcy;&acy;&vcy;&lcy;&iecy;&ncy;&icy;&yacy; &dcy;&vcy;&ucy;&khcy; &pcy;&acy;&rcy;&acy;&lcy;&lcy;&iecy;&lcy;&softcy;&ncy;&ycy;&khcy; &ncy;&acy;&bcy;&ocy;&rcy;&ocy;&vcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;: &ocy;&dcy;&icy;&ncy; &dcy;&lcy;&yacy; &pcy;&ocy;&lcy;&ncy;&ycy;&khcy; &kcy;&lcy;&ocy;&ncy;&ocy;&vcy;, &acy; &dcy;&rcy;&ucy;&gcy;&ocy;&jcy; &dcy;&lcy;&yacy; &chcy;&acy;&scy;&tcy;&icy;&chcy;&ncy;&ycy;&khcy; &kcy;&lcy;&ocy;&ncy;&ocy;&vcy; &bcy;&iecy;&zcy; &bcy;&ocy;&lcy;&softcy;&shcy;&icy;&khcy; &dcy;&vcy;&ocy;&icy;&chcy;&ncy;&ycy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;.</span></p> <p><span data-i18n="adf2b49e366be95e9dcef621852d748fd5f42eadd8f525d4428ebff5c0333547/20" data-source="Suppose that this bundle list was found at the URI &lt;code&gt;https://bundles.example.com/git/git/&lt;/code&gt; and so the two blobless bundles have the following fully-expanded URIs:" onmousemove="i18n(this)">&Pcy;&rcy;&iecy;&dcy;&pcy;&ocy;&lcy;&ocy;&zhcy;&icy;&mcy;, &chcy;&tcy;&ocy; &ecy;&tcy;&ocy;&tcy; &scy;&pcy;&icy;&scy;&ocy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &bcy;&ycy;&lcy; &ncy;&acy;&jcy;&dcy;&iecy;&ncy; &pcy;&ocy; URI  <code>https://bundles.example.com/git/git/</code> , &icy; &pcy;&ocy;&ecy;&tcy;&ocy;&mcy;&ucy; &dcy;&vcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&acy; &bcy;&iecy;&zcy; &bcy;&ocy;&lcy;&softcy;&shcy;&icy;&khcy; &dcy;&vcy;&ocy;&icy;&chcy;&ncy;&ycy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy; &icy;&mcy;&iecy;&yucy;&tcy; &scy;&lcy;&iecy;&dcy;&ucy;&yucy;&shchcy;&icy;&iecy; &pcy;&ocy;&lcy;&ncy;&ocy;&scy;&tcy;&softcy;&yucy; &rcy;&acy;&zcy;&vcy;&iecy;&rcy;&ncy;&ucy;&tcy;&ycy;&iecy; URI:</span></p> <div> <ul> <li> <p><code>https://bundles.example.com/git/git/2022-02-09-1644442631-daily-blobless.bundle</code></p> </li> <li> <p><code>https://bundles.example.com/git/git/2022-02-02-1643842568-blobless.bundle</code></p> </li> </ul> </div> </div> <h2 class="text-body-emphasis"  id="_advertising_bundle_uris"><span data-i18n="0e89bde54f0d2caae1cf3893cee1e4573e6bf3853dc269b695038439d2186f7c/b7" data-source="Advertising bundle uris" onmousemove="i18n(this)">&Rcy;&iecy;&kcy;&lcy;&acy;&mcy;&ncy;&ycy;&jcy; &pcy;&acy;&kcy;&iecy;&tcy; uris</span></h2> <div> <p><span data-i18n="bf6fd7c7904b6c2bc18eef8dad745c4734cf50b52709229d5f4c94f223307117/35" data-source="If a user knows a bundle URI for the repository they are cloning, then they can specify that URI manually through a command-line option. However, a Git host may want to advertise bundle URIs during the clone operation, helping users unaware of the feature." onmousemove="i18n(this)">&IEcy;&scy;&lcy;&icy; &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&softcy; &zcy;&ncy;&acy;&iecy;&tcy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &dcy;&lcy;&yacy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ucy;&iecy;&mcy;&ocy;&gcy;&ocy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&yacy;, &ocy;&ncy; &mcy;&ocy;&zhcy;&iecy;&tcy; &ucy;&kcy;&acy;&zcy;&acy;&tcy;&softcy; &ecy;&tcy;&ocy;&tcy; URI &vcy;&rcy;&ucy;&chcy;&ncy;&ucy;&yucy; &scy; &pcy;&ocy;&mcy;&ocy;&shchcy;&softcy;&yucy; &pcy;&acy;&rcy;&acy;&mcy;&iecy;&tcy;&rcy;&acy; &kcy;&ocy;&mcy;&acy;&ncy;&dcy;&ncy;&ocy;&jcy; &scy;&tcy;&rcy;&ocy;&kcy;&icy;. &Ocy;&dcy;&ncy;&acy;&kcy;&ocy; &khcy;&ocy;&scy;&tcy;  Git  &mcy;&ocy;&zhcy;&iecy;&tcy; &zcy;&acy;&khcy;&ocy;&tcy;&iecy;&tcy;&softcy; &ocy;&bcy;&hardcy;&yacy;&vcy;&icy;&tcy;&softcy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &vcy;&ocy; &vcy;&rcy;&iecy;&mcy;&yacy; &ocy;&pcy;&iecy;&rcy;&acy;&tscy;&icy;&icy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy;, &pcy;&ocy;&mcy;&ocy;&gcy;&acy;&yacy; &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&yacy;&mcy;, &ncy;&iecy; &zcy;&ncy;&acy;&yucy;&shchcy;&icy;&mcy; &ocy;&bcy; &ecy;&tcy;&ocy;&jcy; &fcy;&ucy;&ncy;&kcy;&tscy;&icy;&icy;.</span></p> <p><span data-i18n="864f7a2ed96af69e863c331eb192fece19af39bbae5766f9e6effd4ab24924f0/62" data-source="The only thing required for this feature is that the server can advertise one or more bundle URIs. This advertisement takes the form of a new protocol v2 capability specifically for discovering bundle URIs." onmousemove="i18n(this)">&IEcy;&dcy;&icy;&ncy;&scy;&tcy;&vcy;&iecy;&ncy;&ncy;&ocy;&iecy;, &chcy;&tcy;&ocy; &tcy;&rcy;&iecy;&bcy;&ucy;&iecy;&tcy;&scy;&yacy; &dcy;&lcy;&yacy; &ecy;&tcy;&ocy;&jcy; &fcy;&ucy;&ncy;&kcy;&tscy;&icy;&icy;, &mdash; &ecy;&tcy;&ocy; &tcy;&ocy;, &chcy;&tcy;&ocy;&bcy;&ycy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy; &mcy;&ocy;&gcy; &ocy;&bcy;&hardcy;&yacy;&vcy;&lcy;&yacy;&tcy;&softcy; &ocy;&dcy;&icy;&ncy; &icy;&lcy;&icy; &ncy;&iecy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&ocy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy;. &Ecy;&tcy;&ocy; &ocy;&bcy;&hardcy;&yacy;&vcy;&lcy;&iecy;&ncy;&icy;&iecy; &pcy;&rcy;&icy;&ncy;&icy;&mcy;&acy;&iecy;&tcy; &fcy;&ocy;&rcy;&mcy;&ucy; &ncy;&ocy;&vcy;&ocy;&jcy; &vcy;&ocy;&zcy;&mcy;&ocy;&zhcy;&ncy;&ocy;&scy;&tcy;&icy; &pcy;&rcy;&ocy;&tcy;&ocy;&kcy;&ocy;&lcy;&acy; v2, &scy;&pcy;&iecy;&tscy;&icy;&acy;&lcy;&softcy;&ncy;&ocy; &pcy;&rcy;&iecy;&dcy;&ncy;&acy;&zcy;&ncy;&acy;&chcy;&iecy;&ncy;&ncy;&ocy;&jcy; &dcy;&lcy;&yacy; &ocy;&bcy;&ncy;&acy;&rcy;&ucy;&zhcy;&iecy;&ncy;&icy;&yacy; URI &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;.</span></p> <p><span data-i18n="0735170ccbe551f0d468a9dcd87c533596b69b0b3a3ff8c86cf8a4788352a6dc/87" data-source="The client could choose an arbitrary bundle URI as an option &lt;code&gt;or&lt;/code&gt; select the URI with best performance by some exploratory checks. It is up to the bundle provider to decide if having multiple URIs is preferable to a single URI that is geodistributed through server-side infrastructure." onmousemove="i18n(this)">&Kcy;&lcy;&icy;&iecy;&ncy;&tcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &vcy;&ycy;&bcy;&rcy;&acy;&tcy;&softcy; &pcy;&rcy;&ocy;&icy;&zcy;&vcy;&ocy;&lcy;&softcy;&ncy;&ycy;&jcy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &vcy; &kcy;&acy;&chcy;&iecy;&scy;&tcy;&vcy;&iecy; &ocy;&pcy;&tscy;&icy;&icy;.  <code>or</code>  &vcy;&ycy;&bcy;&icy;&rcy;&acy;&iecy;&tcy; URI &scy; &ncy;&acy;&icy;&lcy;&ucy;&chcy;&shcy;&iecy;&jcy; &pcy;&rcy;&ocy;&icy;&zcy;&vcy;&ocy;&dcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;&scy;&tcy;&softcy;&yucy; &pcy;&ucy;&tcy;&iecy;&mcy; &ncy;&iecy;&kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&khcy; &pcy;&rcy;&iecy;&dcy;&vcy;&acy;&rcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ycy;&khcy; &pcy;&rcy;&ocy;&vcy;&iecy;&rcy;&ocy;&kcy;. &Pcy;&ocy;&scy;&tcy;&acy;&vcy;&shchcy;&icy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&acy; &dcy;&ocy;&lcy;&zhcy;&iecy;&ncy; &rcy;&iecy;&shcy;&icy;&tcy;&softcy;, &pcy;&rcy;&iecy;&dcy;&pcy;&ocy;&chcy;&tcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&iecy;&iecy; &lcy;&icy; &ncy;&acy;&lcy;&icy;&chcy;&icy;&iecy; &ncy;&iecy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&icy;&khcy; URI &pcy;&ocy; &scy;&rcy;&acy;&vcy;&ncy;&iecy;&ncy;&icy;&yucy; &scy; &ocy;&dcy;&ncy;&icy;&mcy; URI, &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&jcy; &gcy;&iecy;&ocy;&rcy;&acy;&scy;&pcy;&rcy;&iecy;&dcy;&iecy;&lcy;&yacy;&iecy;&tcy;&scy;&yacy; &chcy;&iecy;&rcy;&iecy;&zcy; &icy;&ncy;&fcy;&rcy;&acy;&scy;&tcy;&rcy;&ucy;&kcy;&tcy;&ucy;&rcy;&ucy; &ncy;&acy; &scy;&tcy;&ocy;&rcy;&ocy;&ncy;&iecy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&acy;.</span></p> </div> <h2 class="text-body-emphasis"  id="_cloning_with_bundle_uris"><span data-i18n="7ee72a347e8c03342e677c300a309fb7acfea2afeef194a5dc0bad659a86e443/de" data-source="Cloning with bundle uris" onmousemove="i18n(this)">&Kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&iecy; &scy; &pcy;&ocy;&mcy;&ocy;&shchcy;&softcy;&yucy; &pcy;&acy;&kcy;&iecy;&tcy;&acy; uris</span></h2> <div> <p><span data-i18n="a18036e8f39b72e7240c1f80bd39c678ccddb183d183b10d6368d9f9fcd6da3a/12" data-source="The primary need for bundle URIs is to speed up clones. The Git client will interact with bundle URIs according to the following flow:" onmousemove="i18n(this)">&Ocy;&scy;&ncy;&ocy;&vcy;&ncy;&acy;&yacy; &pcy;&ocy;&tcy;&rcy;&iecy;&bcy;&ncy;&ocy;&scy;&tcy;&softcy; &vcy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&khcy; URI &mdash; &ucy;&scy;&kcy;&ocy;&rcy;&iecy;&ncy;&icy;&iecy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy;. &Kcy;&lcy;&icy;&iecy;&ncy;&tcy;  Git  &bcy;&ucy;&dcy;&iecy;&tcy; &vcy;&zcy;&acy;&icy;&mcy;&ocy;&dcy;&iecy;&jcy;&scy;&tcy;&vcy;&ocy;&vcy;&acy;&tcy;&softcy; &scy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &scy;&ocy;&gcy;&lcy;&acy;&scy;&ncy;&ocy; &scy;&lcy;&iecy;&dcy;&ucy;&yucy;&shchcy;&iecy;&mcy;&ucy; &acy;&lcy;&gcy;&ocy;&rcy;&icy;&tcy;&mcy;&ucy;:</span></p> <div> <ol> <li> <p><span data-i18n="89173dcfff28a906a1becf3fdac8c853e8a902e267e20c3fc50063e5afd47dda/f5" data-source="The user specifies a bundle URI with the &lt;code&gt;--bundle-uri&lt;/code&gt; command-line option &lt;code&gt;or&lt;/code&gt; the client discovers a bundle list advertised by the Git server." onmousemove="i18n(this)">&Pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&softcy; &ucy;&kcy;&acy;&zcy;&ycy;&vcy;&acy;&iecy;&tcy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &scy; &pcy;&ocy;&mcy;&ocy;&shchcy;&softcy;&yucy; &pcy;&acy;&rcy;&acy;&mcy;&iecy;&tcy;&rcy;&acy; &kcy;&ocy;&mcy;&acy;&ncy;&dcy;&ncy;&ocy;&jcy; &scy;&tcy;&rcy;&ocy;&kcy;&icy;  <code>--bundle-uri</code> <code>or</code> , &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &ocy;&bcy;&ncy;&acy;&rcy;&ucy;&zhcy;&icy;&vcy;&acy;&iecy;&tcy; &scy;&pcy;&icy;&scy;&ocy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;, &ocy;&bcy;&hardcy;&yacy;&vcy;&lcy;&iecy;&ncy;&ncy;&ycy;&jcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ocy;&mcy;  Git .</span></p> </li> <li> <p><span data-i18n="9cfa9c279b59ef5a6185d41f0721e44a352b7618e322d2df9f11406bd533ecdb/b0" data-source="If the downloaded data from a bundle URI is a bundle, then the client inspects the bundle headers to check that the prerequisite commit OIDs are present in the client repository. If some are missing, then the client delays unbundling until other bundles have been unbundled, making those OIDs present. When all required OIDs are present, the client unbundles that data using a refspec. The default refspec is &lt;code&gt;+refs/heads/*:refs/bundles/*&lt;/code&gt;, but this can be configured. These refs are stored so that later &lt;code&gt;git fetch&lt;/code&gt; negotiations can communicate each bundled ref as a &lt;code&gt;have&lt;/code&gt;, reducing the size of the fetch over the Git protocol. To allow pruning refs from this ref namespace, Git may introduce a numbered namespace (such as &lt;code&gt;refs/bundles/&amp;lt;i&amp;gt;/*&lt;/code&gt;) such that stale bundle refs can be deleted." onmousemove="i18n(this)">&IEcy;&scy;&lcy;&icy; &zcy;&acy;&gcy;&rcy;&ucy;&zhcy;&iecy;&ncy;&ncy;&ycy;&iecy; &dcy;&acy;&ncy;&ncy;&ycy;&iecy; &icy;&zcy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &yacy;&vcy;&lcy;&yacy;&yucy;&tcy;&scy;&yacy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&mcy;, &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &pcy;&rcy;&ocy;&vcy;&iecy;&rcy;&yacy;&iecy;&tcy; &zcy;&acy;&gcy;&ocy;&lcy;&ocy;&vcy;&kcy;&icy; &pcy;&acy;&kcy;&iecy;&tcy;&acy;, &chcy;&tcy;&ocy;&bcy;&ycy; &ucy;&bcy;&iecy;&dcy;&icy;&tcy;&softcy;&scy;&yacy;, &chcy;&tcy;&ocy; &ncy;&iecy;&ocy;&bcy;&khcy;&ocy;&dcy;&icy;&mcy;&ycy;&iecy; OID &fcy;&icy;&kcy;&scy;&acy;&tscy;&icy;&icy; &pcy;&rcy;&icy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&tcy; &vcy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&icy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&acy;. &IEcy;&scy;&lcy;&icy; &ncy;&iecy;&kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&iecy; &icy;&zcy; &ncy;&icy;&khcy; &ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&tcy;, &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &ocy;&tcy;&kcy;&lcy;&acy;&dcy;&ycy;&vcy;&acy;&iecy;&tcy; &rcy;&acy;&zcy;&dcy;&iecy;&lcy;&iecy;&ncy;&icy;&iecy; &dcy;&ocy; &tcy;&iecy;&khcy; &pcy;&ocy;&rcy;, &pcy;&ocy;&kcy;&acy; &ncy;&iecy; &bcy;&ucy;&dcy;&ucy;&tcy; &rcy;&acy;&zcy;&dcy;&iecy;&lcy;&iecy;&ncy;&ycy; &dcy;&rcy;&ucy;&gcy;&icy;&iecy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy;, &vcy; &rcy;&iecy;&zcy;&ucy;&lcy;&softcy;&tcy;&acy;&tcy;&iecy; &chcy;&iecy;&gcy;&ocy; &ecy;&tcy;&icy; OID &pcy;&ocy;&yacy;&vcy;&yacy;&tcy;&scy;&yacy;. &Kcy;&ocy;&gcy;&dcy;&acy; &pcy;&rcy;&icy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&tcy; &vcy;&scy;&iecy; &ncy;&iecy;&ocy;&bcy;&khcy;&ocy;&dcy;&icy;&mcy;&ycy;&iecy; OID, &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &rcy;&acy;&zcy;&dcy;&iecy;&lcy;&yacy;&iecy;&tcy; &ecy;&tcy;&icy; &dcy;&acy;&ncy;&ncy;&ycy;&iecy; &scy; &pcy;&ocy;&mcy;&ocy;&shchcy;&softcy;&yucy; refspec. &Scy;&pcy;&iecy;&tscy;&icy;&fcy;&icy;&kcy;&acy;&tscy;&icy;&yacy; &pcy;&ocy; &ucy;&mcy;&ocy;&lcy;&chcy;&acy;&ncy;&icy;&yucy; &mdash;  <code>+refs/heads/*:refs/bundles/*</code> , &ncy;&ocy; &ecy;&tcy;&ocy; &mcy;&ocy;&zhcy;&ncy;&ocy; &ncy;&acy;&scy;&tcy;&rcy;&ocy;&icy;&tcy;&softcy;. &Ecy;&tcy;&icy; &scy;&scy;&ycy;&lcy;&kcy;&icy; &scy;&ocy;&khcy;&rcy;&acy;&ncy;&yacy;&yucy;&tcy;&scy;&yacy;, &chcy;&tcy;&ocy;&bcy;&ycy; &pcy;&rcy;&icy; &pcy;&ocy;&scy;&lcy;&iecy;&dcy;&ucy;&yucy;&shchcy;&icy;&khcy; &scy;&ocy;&gcy;&lcy;&acy;&scy;&ocy;&vcy;&acy;&ncy;&icy;&yacy;&khcy;  <code>git fetch</code>  &mcy;&ocy;&zhcy;&ncy;&ocy; &bcy;&ycy;&lcy;&ocy; &pcy;&iecy;&rcy;&iecy;&dcy;&acy;&vcy;&acy;&tcy;&softcy; &kcy;&acy;&zhcy;&dcy;&ucy;&yucy; &ocy;&bcy;&hardcy;&iecy;&dcy;&icy;&ncy;&iecy;&ncy;&ncy;&ucy;&yucy; &scy;&scy;&ycy;&lcy;&kcy;&ucy; &kcy;&acy;&kcy;  <code>have</code> , &ucy;&mcy;&iecy;&ncy;&softcy;&shcy;&acy;&yacy; &rcy;&acy;&zcy;&mcy;&iecy;&rcy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&icy; &pcy;&ocy; &pcy;&rcy;&ocy;&tcy;&ocy;&kcy;&ocy;&lcy;&ucy;  Git . &CHcy;&tcy;&ocy;&bcy;&ycy; &rcy;&acy;&zcy;&rcy;&iecy;&shcy;&icy;&tcy;&softcy; &ucy;&dcy;&acy;&lcy;&iecy;&ncy;&icy;&iecy; &scy;&scy;&ycy;&lcy;&ocy;&kcy; &icy;&zcy; &ecy;&tcy;&ocy;&gcy;&ocy; &pcy;&rcy;&ocy;&scy;&tcy;&rcy;&acy;&ncy;&scy;&tcy;&vcy;&acy; &icy;&mcy;&iecy;&ncy; &scy;&scy;&ycy;&lcy;&ocy;&kcy;,  Git  &mcy;&ocy;&zhcy;&iecy;&tcy; &vcy;&vcy;&iecy;&scy;&tcy;&icy; &pcy;&rcy;&ocy;&ncy;&ucy;&mcy;&iecy;&rcy;&ocy;&vcy;&acy;&ncy;&ncy;&ocy;&iecy; &pcy;&rcy;&ocy;&scy;&tcy;&rcy;&acy;&ncy;&scy;&tcy;&vcy;&ocy; &icy;&mcy;&iecy;&ncy; (&ncy;&acy;&pcy;&rcy;&icy;&mcy;&iecy;&rcy;,  <code>refs/bundles/&lt;i&gt;/*</code>  ), &chcy;&tcy;&ocy;&bcy;&ycy; &mcy;&ocy;&zhcy;&ncy;&ocy; &bcy;&ycy;&lcy;&ocy; &ucy;&dcy;&acy;&lcy;&icy;&tcy;&softcy; &ucy;&scy;&tcy;&acy;&rcy;&iecy;&vcy;&shcy;&icy;&iecy; &scy;&scy;&ycy;&lcy;&kcy;&icy; &ncy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy;.</span></p> </li> <li> <p><span data-i18n="4bf45cdd04fef22c51dd8448ee2cc9f712886ce9dde7e99000c4b3aee6d0230e/c8" data-source="If the file is instead a bundle list, then the client inspects the &lt;code&gt;bundle.mode&lt;/code&gt; to see if the list is of the &lt;code&gt;all&lt;/code&gt; or &lt;code&gt;any&lt;/code&gt; form." onmousemove="i18n(this)">&IEcy;&scy;&lcy;&icy; &vcy;&mcy;&iecy;&scy;&tcy;&ocy; &ecy;&tcy;&ocy;&gcy;&ocy; &fcy;&acy;&jcy;&lcy; &pcy;&rcy;&iecy;&dcy;&scy;&tcy;&acy;&vcy;&lcy;&yacy;&iecy;&tcy; &scy;&ocy;&bcy;&ocy;&jcy; &scy;&pcy;&icy;&scy;&ocy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;, &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &pcy;&rcy;&ocy;&vcy;&iecy;&rcy;&yacy;&iecy;&tcy;  <code>bundle.mode</code> , &chcy;&tcy;&ocy;&bcy;&ycy; &ocy;&pcy;&rcy;&iecy;&dcy;&iecy;&lcy;&icy;&tcy;&softcy;, &icy;&mcy;&iecy;&iecy;&tcy; &lcy;&icy; &scy;&pcy;&icy;&scy;&ocy;&kcy; &fcy;&ocy;&rcy;&mcy;&ucy;  <code>all</code>  &icy;&lcy;&icy;  <code>any</code> .</span></p> <div> <ol> <li> <p><span data-i18n="05fc461eb9a3f1617efc94294074ad91127cdf21125b86c797059a9cc594eb67/ad" data-source="If &lt;code&gt;bundle.mode=all&lt;/code&gt;, then the client considers all bundle URIs. The list is reduced based on the &lt;code&gt;bundle.&amp;lt;id&amp;gt;.filter&lt;/code&gt; options matching the client repository&amp;rsquo;s partial clone filter. Then, all bundle URIs are requested. If the &lt;code&gt;bundle.&amp;lt;id&amp;gt;.creationToken&lt;/code&gt; heuristic is provided, then the bundles are downloaded in decreasing order by the creation token, stopping when a bundle has all required OIDs. The bundles can then be unbundled in increasing creation token order. The client stores the latest creation token as a heuristic for avoiding future downloads if the bundle list does not advertise bundles with larger creation tokens." onmousemove="i18n(this)">&IEcy;&scy;&lcy;&icy;  <code>bundle.mode=all</code>  , &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &ucy;&chcy;&icy;&tcy;&ycy;&vcy;&acy;&iecy;&tcy; &vcy;&scy;&iecy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy;. &Scy;&pcy;&icy;&scy;&ocy;&kcy; &scy;&ocy;&kcy;&rcy;&acy;&shchcy;&acy;&iecy;&tcy;&scy;&yacy; &ncy;&acy; &ocy;&scy;&ncy;&ocy;&vcy;&iecy; &pcy;&acy;&rcy;&acy;&mcy;&iecy;&tcy;&rcy;&ocy;&vcy;  <code>bundle.&lt;id&gt;.filter</code> , &scy;&ocy;&ocy;&tcy;&vcy;&iecy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&khcy; &fcy;&icy;&lcy;&softcy;&tcy;&rcy;&ucy; &chcy;&acy;&scy;&tcy;&icy;&chcy;&ncy;&ocy;&gcy;&ocy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&scy;&kcy;&ocy;&gcy;&ocy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&yacy;. &Zcy;&acy;&tcy;&iecy;&mcy; &zcy;&acy;&pcy;&rcy;&acy;&shcy;&icy;&vcy;&acy;&yucy;&tcy;&scy;&yacy; &vcy;&scy;&iecy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy;. &IEcy;&scy;&lcy;&icy; &pcy;&rcy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&vcy;&lcy;&iecy;&ncy;&acy; &ZeroWidthSpace;&ZeroWidthSpace;&ecy;&vcy;&rcy;&icy;&scy;&tcy;&icy;&kcy;&acy;  <code>bundle.&lt;id&gt;.creationToken</code> , &pcy;&acy;&kcy;&iecy;&tcy;&ycy; &zcy;&acy;&gcy;&rcy;&ucy;&zhcy;&acy;&yucy;&tcy;&scy;&yacy; &vcy; &pcy;&ocy;&rcy;&yacy;&dcy;&kcy;&iecy; &ucy;&bcy;&ycy;&vcy;&acy;&ncy;&icy;&yacy; &tcy;&ocy;&kcy;&iecy;&ncy;&acy; &scy;&ocy;&zcy;&dcy;&acy;&ncy;&icy;&yacy; &icy; &ocy;&scy;&tcy;&acy;&ncy;&acy;&vcy;&lcy;&icy;&vcy;&acy;&yucy;&tcy;&scy;&yacy;, &kcy;&ocy;&gcy;&dcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy; &icy;&mcy;&iecy;&iecy;&tcy; &vcy;&scy;&iecy; &ncy;&iecy;&ocy;&bcy;&khcy;&ocy;&dcy;&icy;&mcy;&ycy;&iecy; OID. &Zcy;&acy;&tcy;&iecy;&mcy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy; &mcy;&ocy;&zhcy;&ncy;&ocy; &rcy;&acy;&zcy;&dcy;&iecy;&lcy;&icy;&tcy;&softcy; &vcy; &pcy;&ocy;&rcy;&yacy;&dcy;&kcy;&iecy; &ucy;&vcy;&iecy;&lcy;&icy;&chcy;&iecy;&ncy;&icy;&yacy; &pcy;&ocy;&rcy;&yacy;&dcy;&kcy;&acy; &scy;&ocy;&zcy;&dcy;&acy;&ncy;&icy;&yacy; &tcy;&ocy;&kcy;&iecy;&ncy;&ocy;&vcy;. &Kcy;&lcy;&icy;&iecy;&ncy;&tcy; &scy;&ocy;&khcy;&rcy;&acy;&ncy;&yacy;&iecy;&tcy; &pcy;&ocy;&scy;&lcy;&iecy;&dcy;&ncy;&icy;&jcy; &tcy;&ocy;&kcy;&iecy;&ncy; &scy;&ocy;&zcy;&dcy;&acy;&ncy;&icy;&yacy; &vcy; &kcy;&acy;&chcy;&iecy;&scy;&tcy;&vcy;&iecy; &ecy;&vcy;&rcy;&icy;&scy;&tcy;&icy;&kcy;&icy;, &chcy;&tcy;&ocy;&bcy;&ycy; &icy;&zcy;&bcy;&iecy;&zhcy;&acy;&tcy;&softcy; &bcy;&ucy;&dcy;&ucy;&shchcy;&icy;&khcy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&ocy;&kcy;, &iecy;&scy;&lcy;&icy; &vcy; &scy;&pcy;&icy;&scy;&kcy;&iecy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &ncy;&iecy; &rcy;&iecy;&kcy;&lcy;&acy;&mcy;&icy;&rcy;&ucy;&yucy;&tcy;&scy;&yacy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy; &scy; &bcy;&ocy;&lcy;&iecy;&iecy; &kcy;&rcy;&ucy;&pcy;&ncy;&ycy;&mcy;&icy; &tcy;&ocy;&kcy;&iecy;&ncy;&acy;&mcy;&icy; &scy;&ocy;&zcy;&dcy;&acy;&ncy;&icy;&yacy;.</span></p> </li> <li> <p><span data-i18n="bee0b232f28ad398149603329ddf7ba85b6cf7854d9ca35e034ca09c2a016106/8b" data-source="If &lt;code&gt;bundle.mode=any&lt;/code&gt;, then the client can choose any one of the bundle URIs to inspect. The client can use a variety of ways to choose among these URIs. The client can also fallback to another URI if the initial choice fails to return a result." onmousemove="i18n(this)">&IEcy;&scy;&lcy;&icy;  <code>bundle.mode=any</code>  , &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &vcy;&ycy;&bcy;&rcy;&acy;&tcy;&softcy; &dcy;&lcy;&yacy; &pcy;&rcy;&ocy;&vcy;&iecy;&rcy;&kcy;&icy; &lcy;&yucy;&bcy;&ocy;&jcy; &icy;&zcy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy;. &Kcy;&lcy;&icy;&iecy;&ncy;&tcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy; &rcy;&acy;&zcy;&lcy;&icy;&chcy;&ncy;&ycy;&iecy; &scy;&pcy;&ocy;&scy;&ocy;&bcy;&ycy; &vcy;&ycy;&bcy;&ocy;&rcy;&acy; &scy;&rcy;&iecy;&dcy;&icy; &ecy;&tcy;&icy;&khcy; URI. &Kcy;&lcy;&icy;&iecy;&ncy;&tcy; &tcy;&acy;&kcy;&zhcy;&iecy; &mcy;&ocy;&zhcy;&iecy;&tcy; &vcy;&iecy;&rcy;&ncy;&ucy;&tcy;&softcy;&scy;&yacy; &kcy; &dcy;&rcy;&ucy;&gcy;&ocy;&mcy;&ucy; URI, &iecy;&scy;&lcy;&icy; &pcy;&iecy;&rcy;&vcy;&ocy;&ncy;&acy;&chcy;&acy;&lcy;&softcy;&ncy;&ycy;&jcy; &vcy;&ycy;&bcy;&ocy;&rcy; &ncy;&iecy; &vcy;&ocy;&zcy;&vcy;&rcy;&acy;&shchcy;&acy;&iecy;&tcy; &rcy;&iecy;&zcy;&ucy;&lcy;&softcy;&tcy;&acy;&tcy;.</span></p> </li> </ol> </div> </li> </ol> </div> <p><span data-i18n="1299fad9fd4f32c9be3b35deceafbb39c0f6f5c89d226e795d658cc9eb23b1b6/8f" data-source="Note that during a clone we expect that all bundles will be required, and heuristics such as &lt;code&gt;bundle.&amp;lt;uri&amp;gt;.creationToken&lt;/code&gt; can be used to download bundles in chronological order or in parallel." onmousemove="i18n(this)">&Ocy;&bcy;&rcy;&acy;&tcy;&icy;&tcy;&iecy; &vcy;&ncy;&icy;&mcy;&acy;&ncy;&icy;&iecy;, &chcy;&tcy;&ocy; &vcy;&ocy; &vcy;&rcy;&iecy;&mcy;&yacy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy; &mcy;&ycy; &ocy;&zhcy;&icy;&dcy;&acy;&iecy;&mcy;, &chcy;&tcy;&ocy; &pcy;&ocy;&tcy;&rcy;&iecy;&bcy;&ucy;&yucy;&tcy;&scy;&yacy; &vcy;&scy;&iecy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy;, &icy; &ecy;&vcy;&rcy;&icy;&scy;&tcy;&icy;&kcy;&icy;, &tcy;&acy;&kcy;&icy;&iecy; &kcy;&acy;&kcy;  <code>bundle.&lt;uri&gt;.creationToken</code> , &mcy;&ocy;&zhcy;&ncy;&ocy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy; &dcy;&lcy;&yacy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&icy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &vcy; &khcy;&rcy;&ocy;&ncy;&ocy;&lcy;&ocy;&gcy;&icy;&chcy;&iecy;&scy;&kcy;&ocy;&mcy; &pcy;&ocy;&rcy;&yacy;&dcy;&kcy;&iecy; &icy;&lcy;&icy; &pcy;&acy;&rcy;&acy;&lcy;&lcy;&iecy;&lcy;&softcy;&ncy;&ocy;.</span></p> <p><span data-i18n="b9b6098e2930a340df9c1b0ae63ce8b4a4a4ee720c8ff822f28217aae29cadd7/15" data-source="If a given bundle URI is a bundle list with a &lt;code&gt;bundle.heuristic&lt;/code&gt; value, then the client can choose to store that URI as its chosen bundle URI. The client can then navigate directly to that URI during later &lt;code&gt;git
fetch&lt;/code&gt; calls." onmousemove="i18n(this)">&IEcy;&scy;&lcy;&icy; &dcy;&acy;&ncy;&ncy;&ycy;&jcy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &pcy;&rcy;&iecy;&dcy;&scy;&tcy;&acy;&vcy;&lcy;&yacy;&iecy;&tcy; &scy;&ocy;&bcy;&ocy;&jcy; &scy;&pcy;&icy;&scy;&ocy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &scy;&ocy; &zcy;&ncy;&acy;&chcy;&iecy;&ncy;&icy;&iecy;&mcy;  <code>bundle.heuristic</code> , &tcy;&ocy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &vcy;&ycy;&bcy;&rcy;&acy;&tcy;&softcy; &scy;&ocy;&khcy;&rcy;&acy;&ncy;&iecy;&ncy;&icy;&iecy; &ecy;&tcy;&ocy;&gcy;&ocy; URI &vcy; &kcy;&acy;&chcy;&iecy;&scy;&tcy;&vcy;&iecy; &vcy;&ycy;&bcy;&rcy;&acy;&ncy;&ncy;&ocy;&gcy;&ocy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy;. &Zcy;&acy;&tcy;&iecy;&mcy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &pcy;&iecy;&rcy;&iecy;&jcy;&tcy;&icy; &ncy;&iecy;&pcy;&ocy;&scy;&rcy;&iecy;&dcy;&scy;&tcy;&vcy;&iecy;&ncy;&ncy;&ocy; &kcy; &ecy;&tcy;&ocy;&mcy;&ucy; URI &vcy;&ocy; &vcy;&rcy;&iecy;&mcy;&yacy; &pcy;&ocy;&scy;&lcy;&iecy;&dcy;&ucy;&yucy;&shchcy;&icy;&khcy; &vcy;&ycy;&zcy;&ocy;&vcy;&ocy;&vcy;  <code>git
fetch</code> .</span></p> <p><span data-i18n="38a00a0b354bceaecc3b81a381254cd45af6216e8a2321873d672ac7c4c4436e/f3" data-source="When downloading bundle URIs, the client can choose to inspect the initial content before committing to downloading the entire content. This may provide enough information to determine if the URI is a bundle list or a bundle. In the case of a bundle, the client may inspect the bundle header to determine that all advertised tips are already in the client repository and cancel the remaining download." onmousemove="i18n(this)">&Pcy;&rcy;&icy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&iecy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &pcy;&rcy;&ocy;&vcy;&iecy;&rcy;&icy;&tcy;&softcy; &icy;&scy;&khcy;&ocy;&dcy;&ncy;&ycy;&jcy; &kcy;&ocy;&ncy;&tcy;&iecy;&ncy;&tcy;, &pcy;&rcy;&iecy;&zhcy;&dcy;&iecy; &chcy;&iecy;&mcy; &pcy;&rcy;&icy;&scy;&tcy;&ucy;&pcy;&icy;&tcy;&softcy; &kcy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&iecy; &vcy;&scy;&iecy;&gcy;&ocy; &kcy;&ocy;&ncy;&tcy;&iecy;&ncy;&tcy;&acy;. &Ecy;&tcy;&ocy; &mcy;&ocy;&zhcy;&iecy;&tcy; &pcy;&rcy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&vcy;&icy;&tcy;&softcy; &dcy;&ocy;&scy;&tcy;&acy;&tcy;&ocy;&chcy;&ncy;&ocy; &icy;&ncy;&fcy;&ocy;&rcy;&mcy;&acy;&tscy;&icy;&icy;, &chcy;&tcy;&ocy;&bcy;&ycy; &ocy;&pcy;&rcy;&iecy;&dcy;&iecy;&lcy;&icy;&tcy;&softcy;, &yacy;&vcy;&lcy;&yacy;&iecy;&tcy;&scy;&yacy; &lcy;&icy; URI &scy;&pcy;&icy;&scy;&kcy;&ocy;&mcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &icy;&lcy;&icy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&mcy;. &Vcy; &scy;&lcy;&ucy;&chcy;&acy;&iecy; &pcy;&acy;&kcy;&iecy;&tcy;&acy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &pcy;&rcy;&ocy;&vcy;&iecy;&rcy;&icy;&tcy;&softcy; &zcy;&acy;&gcy;&ocy;&lcy;&ocy;&vcy;&ocy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&acy;, &chcy;&tcy;&ocy;&bcy;&ycy; &ocy;&pcy;&rcy;&iecy;&dcy;&iecy;&lcy;&icy;&tcy;&softcy;, &chcy;&tcy;&ocy; &vcy;&scy;&iecy; &rcy;&iecy;&kcy;&lcy;&acy;&mcy;&icy;&rcy;&ucy;&iecy;&mcy;&ycy;&iecy; &scy;&ocy;&vcy;&iecy;&tcy;&ycy; &ucy;&zhcy;&iecy; &ncy;&acy;&khcy;&ocy;&dcy;&yacy;&tcy;&scy;&yacy; &vcy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&icy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&acy;, &icy; &ocy;&tcy;&mcy;&iecy;&ncy;&icy;&tcy;&softcy; &ocy;&scy;&tcy;&acy;&vcy;&shcy;&ucy;&yucy;&scy;&yacy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&ucy;.</span></p> </div> <h2 class="text-body-emphasis"  id="_fetching_with_bundle_uris"><span data-i18n="067b95db4ac5af7e09d4cd5e411914880e627e3d73eadb85d2648f142c8d4855/7d" data-source="Fetching with bundle uris" onmousemove="i18n(this)">&Icy;&zcy;&vcy;&lcy;&iecy;&chcy;&iecy;&ncy;&icy;&iecy; &scy; &pcy;&ocy;&mcy;&ocy;&shchcy;&softcy;&yucy; &pcy;&acy;&kcy;&iecy;&tcy;&acy; URI</span></h2> <div> <p><span data-i18n="3f5a0c1fb29fcf44bfa073bf3f388cd7a9b787822cfee3e09d2d68a0925a514b/e1" data-source="When the client fetches new data, it can decide to fetch from bundle servers before fetching from the origin remote. This could be done via a command-line option, but it is more likely useful to use a config value such as the one specified during the clone." onmousemove="i18n(this)">&Kcy;&ocy;&gcy;&dcy;&acy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &icy;&zcy;&vcy;&lcy;&iecy;&kcy;&acy;&iecy;&tcy; &ncy;&ocy;&vcy;&ycy;&iecy; &dcy;&acy;&ncy;&ncy;&ycy;&iecy;, &ocy;&ncy; &mcy;&ocy;&zhcy;&iecy;&tcy; &rcy;&iecy;&shcy;&icy;&tcy;&softcy; &pcy;&ocy;&lcy;&ucy;&chcy;&icy;&tcy;&softcy; &icy;&khcy; &scy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ocy;&vcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;, &pcy;&rcy;&iecy;&zhcy;&dcy;&iecy; &chcy;&iecy;&mcy; &pcy;&ocy;&lcy;&ucy;&chcy;&acy;&tcy;&softcy; &icy;&khcy; &scy; &ucy;&dcy;&acy;&lcy;&iecy;&ncy;&ncy;&ocy;&gcy;&ocy; &icy;&scy;&tcy;&ocy;&chcy;&ncy;&icy;&kcy;&acy;. &Ecy;&tcy;&ocy; &mcy;&ocy;&zhcy;&ncy;&ocy; &scy;&dcy;&iecy;&lcy;&acy;&tcy;&softcy; &scy; &pcy;&ocy;&mcy;&ocy;&shchcy;&softcy;&yucy; &pcy;&acy;&rcy;&acy;&mcy;&iecy;&tcy;&rcy;&acy; &kcy;&ocy;&mcy;&acy;&ncy;&dcy;&ncy;&ocy;&jcy; &scy;&tcy;&rcy;&ocy;&kcy;&icy;, &ncy;&ocy; &bcy;&ocy;&lcy;&iecy;&iecy; &vcy;&iecy;&rcy;&ocy;&yacy;&tcy;&ncy;&ocy; &bcy;&ucy;&dcy;&iecy;&tcy; &pcy;&ocy;&lcy;&iecy;&zcy;&ncy;&ocy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy; &zcy;&ncy;&acy;&chcy;&iecy;&ncy;&icy;&iecy; &kcy;&ocy;&ncy;&fcy;&icy;&gcy;&ucy;&rcy;&acy;&tscy;&icy;&icy;, &ncy;&acy;&pcy;&rcy;&icy;&mcy;&iecy;&rcy;, &ucy;&kcy;&acy;&zcy;&acy;&ncy;&ncy;&ocy;&iecy; &vcy;&ocy; &vcy;&rcy;&iecy;&mcy;&yacy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy;.</span></p> <p><span data-i18n="d59acfbf48fbf875c4508182c05126e0bbd8ef421976fb9455e80f079c8a4925/eb" data-source="The fetch operation follows the same procedure to download bundles from a bundle list (although we do &lt;code&gt;not&lt;/code&gt; want to use parallel downloads here). We expect that the process will end when all prerequisite commit OIDs in a thin bundle are already in the object database." onmousemove="i18n(this)">&Ocy;&pcy;&iecy;&rcy;&acy;&tscy;&icy;&yacy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&icy; &scy;&lcy;&iecy;&dcy;&ucy;&iecy;&tcy; &tcy;&ocy;&jcy; &zhcy;&iecy; &pcy;&rcy;&ocy;&tscy;&iecy;&dcy;&ucy;&rcy;&iecy;, &chcy;&tcy;&ocy; &icy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &icy;&zcy; &scy;&pcy;&icy;&scy;&kcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; (&khcy;&ocy;&tcy;&yacy; &mcy;&ycy; &khcy;&ocy;&tcy;&icy;&mcy;, &chcy;&tcy;&ocy;&bcy;&ycy;  <code>not</code>  &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&lcy; &zcy;&dcy;&iecy;&scy;&softcy; &pcy;&acy;&rcy;&acy;&lcy;&lcy;&iecy;&lcy;&softcy;&ncy;&ucy;&yucy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&ucy;). &Mcy;&ycy; &ocy;&zhcy;&icy;&dcy;&acy;&iecy;&mcy;, &chcy;&tcy;&ocy; &pcy;&rcy;&ocy;&tscy;&iecy;&scy;&scy; &zcy;&acy;&vcy;&iecy;&rcy;&shcy;&icy;&tcy;&scy;&yacy;, &kcy;&ocy;&gcy;&dcy;&acy; &vcy;&scy;&iecy; &ncy;&iecy;&ocy;&bcy;&khcy;&ocy;&dcy;&icy;&mcy;&ycy;&iecy; OID &fcy;&icy;&kcy;&scy;&acy;&tscy;&icy;&icy; &vcy; &tcy;&ocy;&ncy;&kcy;&ocy;&mcy; &pcy;&acy;&kcy;&iecy;&tcy;&iecy; &ucy;&zhcy;&iecy; &bcy;&ucy;&dcy;&ucy;&tcy; &vcy; &bcy;&acy;&zcy;&iecy; &dcy;&acy;&ncy;&ncy;&ycy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;.</span></p> <p><span data-i18n="726965db4b0b7a307b35c90f6797bc07f76dcfb0a6331282a1e6e85aee87f310/82" data-source="When using the &lt;code&gt;creationToken&lt;/code&gt; heuristic, the client can avoid downloading any bundles if their creation tokens are not larger than the stored creation token. After fetching new bundles, Git updates this local creation token." onmousemove="i18n(this)">&Pcy;&rcy;&icy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&ncy;&icy;&icy; &ecy;&vcy;&rcy;&icy;&scy;&tcy;&icy;&kcy;&icy;  <code>creationToken</code>  &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &icy;&zcy;&bcy;&iecy;&zhcy;&acy;&tcy;&softcy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&icy; &kcy;&acy;&kcy;&icy;&khcy;-&lcy;&icy;&bcy;&ocy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;, &iecy;&scy;&lcy;&icy; &icy;&khcy; &tcy;&ocy;&kcy;&iecy;&ncy;&ycy; &scy;&ocy;&zcy;&dcy;&acy;&ncy;&icy;&yacy; &ncy;&iecy; &bcy;&ocy;&lcy;&softcy;&shcy;&iecy;, &chcy;&iecy;&mcy; &scy;&ocy;&khcy;&rcy;&acy;&ncy;&iecy;&ncy;&ncy;&ycy;&jcy; &tcy;&ocy;&kcy;&iecy;&ncy; &scy;&ocy;&zcy;&dcy;&acy;&ncy;&icy;&yacy;. &Pcy;&ocy;&scy;&lcy;&iecy; &pcy;&ocy;&lcy;&ucy;&chcy;&iecy;&ncy;&icy;&yacy; &ncy;&ocy;&vcy;&ycy;&khcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;  Git  &ocy;&bcy;&ncy;&ocy;&vcy;&lcy;&yacy;&iecy;&tcy; &ecy;&tcy;&ocy;&tcy; &lcy;&ocy;&kcy;&acy;&lcy;&softcy;&ncy;&ycy;&jcy; &tcy;&ocy;&kcy;&iecy;&ncy; &scy;&ocy;&zcy;&dcy;&acy;&ncy;&icy;&yacy;.</span></p> <p><span data-i18n="3dc41c1866782247d9427786d09ac2cfb1428889b973d934d2ca19c4c4fd84d6/db" data-source="If the bundle provider does not provide a heuristic, then the client should attempt to inspect the bundle headers before downloading the full bundle data in case the bundle tips already exist in the client repository." onmousemove="i18n(this)">&IEcy;&scy;&lcy;&icy; &pcy;&ocy;&scy;&tcy;&acy;&vcy;&shchcy;&icy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&acy; &ncy;&iecy; &pcy;&rcy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&vcy;&lcy;&yacy;&iecy;&tcy; &ecy;&vcy;&rcy;&icy;&scy;&tcy;&icy;&kcy;&ucy;, &tcy;&ocy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &dcy;&ocy;&lcy;&zhcy;&iecy;&ncy; &pcy;&ocy;&pcy;&ycy;&tcy;&acy;&tcy;&softcy;&scy;&yacy; &pcy;&rcy;&ocy;&vcy;&iecy;&rcy;&icy;&tcy;&softcy; &zcy;&acy;&gcy;&ocy;&lcy;&ocy;&vcy;&kcy;&icy; &pcy;&acy;&kcy;&iecy;&tcy;&acy; &pcy;&iecy;&rcy;&iecy;&dcy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&ocy;&jcy; &pcy;&ocy;&lcy;&ncy;&ycy;&khcy; &dcy;&acy;&ncy;&ncy;&ycy;&khcy; &pcy;&acy;&kcy;&iecy;&tcy;&acy; &ncy;&acy; &scy;&lcy;&ucy;&chcy;&acy;&jcy;, &iecy;&scy;&lcy;&icy; &pcy;&ocy;&dcy;&scy;&kcy;&acy;&zcy;&kcy;&icy; &pcy;&acy;&kcy;&iecy;&tcy;&acy; &ucy;&zhcy;&iecy; &scy;&ucy;&shchcy;&iecy;&scy;&tcy;&vcy;&ucy;&yucy;&tcy; &vcy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&icy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&acy;.</span></p> </div> <h2 class="text-body-emphasis"  id="_error_conditions"><span data-i18n="926bae1c64df4ed945c953e7d0250ce8a3a06b21dde7296044468ed12b4a9096/c1" data-source="Error conditions" onmousemove="i18n(this)">Error conditions</span></h2> <div> <p><span data-i18n="ef560a6133baac2ab08e30fb67adc19688a37ae11ac9f011ebe13108ccea7f3e/a9" data-source="If the Git client discovers something unexpected while downloading information according to a bundle URI or the bundle list found at that location, then Git can ignore that data and continue as if it was not given a bundle URI. The remote Git server is the ultimate source of truth, not the bundle URI." onmousemove="i18n(this)">&IEcy;&scy;&lcy;&icy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;  Git  &ocy;&bcy;&ncy;&acy;&rcy;&ucy;&zhcy;&icy;&vcy;&acy;&iecy;&tcy; &chcy;&tcy;&ocy;-&tcy;&ocy; &ncy;&iecy;&ocy;&zhcy;&icy;&dcy;&acy;&ncy;&ncy;&ocy;&iecy; &pcy;&rcy;&icy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&iecy; &icy;&ncy;&fcy;&ocy;&rcy;&mcy;&acy;&tscy;&icy;&icy; &vcy; &scy;&ocy;&ocy;&tcy;&vcy;&iecy;&tcy;&scy;&tcy;&vcy;&icy;&icy; &scy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &icy;&lcy;&icy; &scy;&pcy;&icy;&scy;&kcy;&ocy;&mcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;, &ncy;&acy;&jcy;&dcy;&iecy;&ncy;&ncy;&ycy;&mcy; &vcy; &ecy;&tcy;&ocy;&mcy; &mcy;&iecy;&scy;&tcy;&iecy;, &tcy;&ocy;  Git  &mcy;&ocy;&zhcy;&iecy;&tcy; &icy;&gcy;&ncy;&ocy;&rcy;&icy;&rcy;&ocy;&vcy;&acy;&tcy;&softcy; &ecy;&tcy;&icy; &dcy;&acy;&ncy;&ncy;&ycy;&iecy; &icy; &pcy;&rcy;&ocy;&dcy;&ocy;&lcy;&zhcy;&icy;&tcy;&softcy; &rcy;&acy;&bcy;&ocy;&tcy;&ucy;, &kcy;&acy;&kcy; &iecy;&scy;&lcy;&icy; &bcy;&ycy; &iecy;&mcy;&ucy; &ncy;&iecy; &bcy;&ycy;&lcy; &pcy;&rcy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&vcy;&lcy;&iecy;&ncy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy;. &Ucy;&dcy;&acy;&lcy;&iecy;&ncy;&ncy;&ycy;&jcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;  Git  &yacy;&vcy;&lcy;&yacy;&iecy;&tcy;&scy;&yacy; &ocy;&kcy;&ocy;&ncy;&chcy;&acy;&tcy;&iecy;&lcy;&softcy;&ncy;&ycy;&mcy; &icy;&scy;&tcy;&ocy;&chcy;&ncy;&icy;&kcy;&ocy;&mcy; &dcy;&ocy;&scy;&tcy;&ocy;&vcy;&iecy;&rcy;&ncy;&ocy;&jcy; &icy;&ncy;&fcy;&ocy;&rcy;&mcy;&acy;&tscy;&icy;&icy;, &acy; &ncy;&iecy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy;.</span></p> <p><span data-i18n="b10ffeef2611985b24590f1a53ac7735716898382451071fd31a0a2be64c4a94/2c" data-source="Here are a few example error conditions:" onmousemove="i18n(this)">&Vcy;&ocy;&tcy; &ncy;&iecy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&ocy; &pcy;&rcy;&icy;&mcy;&iecy;&rcy;&ocy;&vcy; &ocy;&shcy;&icy;&bcy;&ocy;&kcy;:</span></p> <div> <ul> <li> <p><span data-i18n="fd1c7eab53e72c89b4103277c971191d020ffb8cbb0b789e48abae82020fb974/65" data-source="The client fails to connect with a server at the given URI or a connection is lost without any chance to recover." onmousemove="i18n(this)">&Kcy;&lcy;&icy;&iecy;&ncy;&tcy;&ucy; &ncy;&iecy; &ucy;&dcy;&acy;&iecy;&tcy;&scy;&yacy; &pcy;&ocy;&dcy;&kcy;&lcy;&yucy;&chcy;&icy;&tcy;&softcy;&scy;&yacy; &kcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ucy; &pcy;&ocy; &zcy;&acy;&dcy;&acy;&ncy;&ncy;&ocy;&mcy;&ucy; URI &icy;&lcy;&icy; &scy;&ocy;&iecy;&dcy;&icy;&ncy;&iecy;&ncy;&icy;&iecy; &tcy;&iecy;&rcy;&yacy;&iecy;&tcy;&scy;&yacy; &bcy;&iecy;&zcy; &vcy;&ocy;&zcy;&mcy;&ocy;&zhcy;&ncy;&ocy;&scy;&tcy;&icy; &vcy;&ocy;&scy;&scy;&tcy;&acy;&ncy;&ocy;&vcy;&lcy;&iecy;&ncy;&icy;&yacy;.</span></p> </li> <li> <p><span data-i18n="04bb37e571a02d0f3b835376fb38f2fa3ff773108cf8823a0701e3e57e7727fa/01" data-source="The client receives a 400-level response (such as &lt;code&gt;404 Not Found&lt;/code&gt; or &lt;code&gt;401 Not Authorized&lt;/code&gt;). The client should use the credential helper to find and provide a credential for the URI, but match the semantics of Git&amp;rsquo;s other HTTP protocols in terms of handling specific 400-level errors." onmousemove="i18n(this)">&Kcy;&lcy;&icy;&iecy;&ncy;&tcy; &pcy;&ocy;&lcy;&ucy;&chcy;&acy;&iecy;&tcy; &ocy;&tcy;&vcy;&iecy;&tcy; &ucy;&rcy;&ocy;&vcy;&ncy;&yacy; 400 (&ncy;&acy;&pcy;&rcy;&icy;&mcy;&iecy;&rcy;,  <code>404 Not Found</code>  &icy;&lcy;&icy;  <code>401 Not Authorized</code> ). &Kcy;&lcy;&icy;&iecy;&ncy;&tcy; &dcy;&ocy;&lcy;&zhcy;&iecy;&ncy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy; &pcy;&ocy;&mcy;&ocy;&shchcy;&ncy;&icy;&kcy; &pcy;&ocy; &ucy;&chcy;&iecy;&tcy;&ncy;&ycy;&mcy; &dcy;&acy;&ncy;&ncy;&ycy;&mcy;, &chcy;&tcy;&ocy;&bcy;&ycy; &ncy;&acy;&jcy;&tcy;&icy; &icy; &pcy;&rcy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&vcy;&icy;&tcy;&softcy; &ucy;&chcy;&iecy;&tcy;&ncy;&ycy;&iecy; &dcy;&acy;&ncy;&ncy;&ycy;&iecy; &dcy;&lcy;&yacy; URI, &ncy;&ocy; &pcy;&rcy;&icy; &ecy;&tcy;&ocy;&mcy; &scy;&ocy;&ocy;&tcy;&vcy;&iecy;&tcy;&scy;&tcy;&vcy;&ocy;&vcy;&acy;&tcy;&softcy; &scy;&iecy;&mcy;&acy;&ncy;&tcy;&icy;&kcy;&iecy; &dcy;&rcy;&ucy;&gcy;&icy;&khcy; HTTP-&pcy;&rcy;&ocy;&tcy;&ocy;&kcy;&ocy;&lcy;&ocy;&vcy; Git &scy; &tcy;&ocy;&chcy;&kcy;&icy; &zcy;&rcy;&iecy;&ncy;&icy;&yacy; &ocy;&bcy;&rcy;&acy;&bcy;&ocy;&tcy;&kcy;&icy; &kcy;&ocy;&ncy;&kcy;&rcy;&iecy;&tcy;&ncy;&ycy;&khcy; &ocy;&shcy;&icy;&bcy;&ocy;&kcy; &ucy;&rcy;&ocy;&vcy;&ncy;&yacy; 400.</span></p> </li> <li> <p><span data-i18n="9c763e9bea4e3b05e9e501b257448efb2b8b089ebc47791ba889a1045d4ca5e0/33" data-source="The server reports any other failure response." onmousemove="i18n(this)">&Scy;&iecy;&rcy;&vcy;&iecy;&rcy; &scy;&ocy;&ocy;&bcy;&shchcy;&acy;&iecy;&tcy; &ocy; &lcy;&yucy;&bcy;&ocy;&mcy; &dcy;&rcy;&ucy;&gcy;&ocy;&mcy; &ocy;&tcy;&vcy;&iecy;&tcy;&iecy; &ocy;&bcy; &ocy;&shcy;&icy;&bcy;&kcy;&iecy;.</span></p> </li> <li> <p><span data-i18n="24c951a9aa41bc64f99ac46b021730876a65ebec6ce4dad543dcfd5c3ddc03c8/1e" data-source="The client receives data that is not parsable as a bundle or bundle list." onmousemove="i18n(this)">&Kcy;&lcy;&icy;&iecy;&ncy;&tcy; &pcy;&ocy;&lcy;&ucy;&chcy;&acy;&iecy;&tcy; &dcy;&acy;&ncy;&ncy;&ycy;&iecy;, &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&iecy; &ncy;&iecy;&vcy;&ocy;&zcy;&mcy;&ocy;&zhcy;&ncy;&ocy; &pcy;&rcy;&ocy;&acy;&ncy;&acy;&lcy;&icy;&zcy;&icy;&rcy;&ocy;&vcy;&acy;&tcy;&softcy; &kcy;&acy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy; &icy;&lcy;&icy; &scy;&pcy;&icy;&scy;&ocy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;.</span></p> </li> <li> <p><span data-i18n="7236ca7275f7b13476c433b94d514970e02c3d12bc397db0ec9aca1316caf419/49" data-source="A bundle includes a filter that does not match expectations." onmousemove="i18n(this)">&Vcy; &kcy;&ocy;&mcy;&pcy;&lcy;&iecy;&kcy;&tcy; &vcy;&khcy;&ocy;&dcy;&icy;&tcy; &fcy;&icy;&lcy;&softcy;&tcy;&rcy;, &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&jcy; &ncy;&iecy; &scy;&ocy;&ocy;&tcy;&vcy;&iecy;&tcy;&scy;&tcy;&vcy;&ucy;&iecy;&tcy; &ocy;&zhcy;&icy;&dcy;&acy;&ncy;&icy;&yacy;&mcy;.</span></p> </li> <li> <p><span data-i18n="6ae09642994dcab90aa044235abe5a720c4767b69de5e692987bcedfb311b7de/a1" data-source="The client cannot unbundle the bundles because the prerequisite commit OIDs are not in the object database and there are no more bundles to download." onmousemove="i18n(this)">&Kcy;&lcy;&icy;&iecy;&ncy;&tcy; &ncy;&iecy; &mcy;&ocy;&zhcy;&iecy;&tcy; &rcy;&acy;&zcy;&dcy;&iecy;&lcy;&icy;&tcy;&softcy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy;, &pcy;&ocy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&ucy; &ncy;&iecy;&ocy;&bcy;&khcy;&ocy;&dcy;&icy;&mcy;&ycy;&iecy; OID &fcy;&icy;&kcy;&scy;&acy;&tscy;&icy;&icy; &ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&tcy; &vcy; &bcy;&acy;&zcy;&iecy; &dcy;&acy;&ncy;&ncy;&ycy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy; &icy; &bcy;&ocy;&lcy;&softcy;&shcy;&iecy; &ncy;&iecy;&tcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &dcy;&lcy;&yacy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&icy;.</span></p> </li> </ul> </div> <p><span data-i18n="a0075c8a18c373436c575a8a7138211bee2d6efc8c0411a7c40bb8bba2cdf31a/77" data-source="There are also situations that could be seen as wasteful, but are not error conditions:" onmousemove="i18n(this)">&Scy;&ucy;&shchcy;&iecy;&scy;&tcy;&vcy;&ucy;&yucy;&tcy; &tcy;&acy;&kcy;&zhcy;&iecy; &scy;&icy;&tcy;&ucy;&acy;&tscy;&icy;&icy;, &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&iecy; &mcy;&ocy;&zhcy;&ncy;&ocy; &rcy;&acy;&scy;&scy;&mcy;&acy;&tcy;&rcy;&icy;&vcy;&acy;&tcy;&softcy; &kcy;&acy;&kcy; &rcy;&acy;&scy;&tcy;&ocy;&chcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;&scy;&tcy;&softcy;, &ncy;&ocy; &ocy;&ncy;&icy; &ncy;&iecy; &yacy;&vcy;&lcy;&yacy;&yucy;&tcy;&scy;&yacy; &ocy;&shcy;&icy;&bcy;&kcy;&acy;&mcy;&icy;:</span></p> <div> <ul> <li> <p><span data-i18n="324901f8bda9efd94715ba98b43c2e306d03a0f001f58e0c9c0768852bad36e1/a0" data-source="The downloaded bundles contain more information than is requested by the clone or fetch request. A primary example is if the user requests a clone with &lt;code&gt;--single-branch&lt;/code&gt; but downloads bundles that store every reachable commit from all &lt;code&gt;refs/heads/*&lt;/code&gt; references. This might be initially wasteful, but perhaps these objects will become reachable by a later ref update that the client cares about." onmousemove="i18n(this)">&Zcy;&acy;&gcy;&rcy;&ucy;&zhcy;&iecy;&ncy;&ncy;&ycy;&iecy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy; &scy;&ocy;&dcy;&iecy;&rcy;&zhcy;&acy;&tcy; &bcy;&ocy;&lcy;&softcy;&shcy;&iecy; &icy;&ncy;&fcy;&ocy;&rcy;&mcy;&acy;&tscy;&icy;&icy;, &chcy;&iecy;&mcy; &zcy;&acy;&pcy;&rcy;&acy;&shcy;&icy;&vcy;&acy;&iecy;&tcy;&scy;&yacy; &zcy;&acy;&pcy;&rcy;&ocy;&scy;&ocy;&mcy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy; &icy;&lcy;&icy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&icy;. &Ocy;&scy;&ncy;&ocy;&vcy;&ncy;&ocy;&jcy; &pcy;&rcy;&icy;&mcy;&iecy;&rcy;: &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&softcy; &zcy;&acy;&pcy;&rcy;&acy;&shcy;&icy;&vcy;&acy;&iecy;&tcy; &kcy;&lcy;&ocy;&ncy; &scy; &pcy;&ocy;&mcy;&ocy;&shchcy;&softcy;&yucy;  <code>--single-branch</code> , &ncy;&ocy; &zcy;&acy;&gcy;&rcy;&ucy;&zhcy;&acy;&iecy;&tcy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy;, &vcy; &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&khcy; &khcy;&rcy;&acy;&ncy;&yacy;&tcy;&scy;&yacy; &vcy;&scy;&iecy; &dcy;&ocy;&scy;&tcy;&ucy;&pcy;&ncy;&ycy;&iecy; &fcy;&icy;&kcy;&scy;&acy;&tscy;&icy;&icy; &icy;&zcy; &vcy;&scy;&iecy;&khcy; &scy;&scy;&ycy;&lcy;&ocy;&kcy;  <code>refs/heads/*</code> . &Pcy;&ocy;&ncy;&acy;&chcy;&acy;&lcy;&ucy; &ecy;&tcy;&ocy; &mcy;&ocy;&zhcy;&iecy;&tcy; &bcy;&ycy;&tcy;&softcy; &rcy;&acy;&scy;&tcy;&ocy;&chcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;, &ncy;&ocy;, &vcy;&ocy;&zcy;&mcy;&ocy;&zhcy;&ncy;&ocy;, &ecy;&tcy;&icy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy; &scy;&tcy;&acy;&ncy;&ucy;&tcy; &dcy;&ocy;&scy;&tcy;&ucy;&pcy;&ncy;&ycy;&mcy;&icy; &pcy;&rcy;&icy; &bcy;&ocy;&lcy;&iecy;&iecy; &pcy;&ocy;&zcy;&dcy;&ncy;&iecy;&mcy; &ocy;&bcy;&ncy;&ocy;&vcy;&lcy;&iecy;&ncy;&icy;&icy; &scy;&scy;&ycy;&lcy;&kcy;&icy;, &kcy;&ocy;&tcy;&ocy;&rcy;&ocy;&iecy; &vcy;&ocy;&lcy;&ncy;&ucy;&iecy;&tcy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&acy;.</span></p> </li> <li> <p><span data-i18n="1e54e520b59224afdd7aab5866471198106bb3a471cc6ce2eecc2871418cd546/25" data-source="A bundle download during a &lt;code&gt;git fetch&lt;/code&gt; contains objects already in the object database. This is probably unavoidable if we are using bundles for fetches, since the client will almost always be slightly ahead of the bundle servers after performing its &amp;quot;catch-up&amp;quot; fetch to the remote server. This extra work is most wasteful when the client is fetching much more frequently than the server is computing bundles, such as if the client is using hourly prefetches with background maintenance, but the server is computing bundles weekly. For this reason, the client should not use bundle URIs for fetch unless the server has explicitly recommended it through a &lt;code&gt;bundle.heuristic&lt;/code&gt; value." onmousemove="i18n(this)">&Zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&acy; &vcy;&ocy; &vcy;&rcy;&iecy;&mcy;&yacy;  <code>git fetch</code>  &scy;&ocy;&dcy;&iecy;&rcy;&zhcy;&icy;&tcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy;, &ucy;&zhcy;&iecy; &ncy;&acy;&khcy;&ocy;&dcy;&yacy;&shchcy;&icy;&iecy;&scy;&yacy; &vcy; &bcy;&acy;&zcy;&iecy; &dcy;&acy;&ncy;&ncy;&ycy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;. &Ecy;&tcy;&ocy;, &vcy;&iecy;&rcy;&ocy;&yacy;&tcy;&ncy;&ocy;, &ncy;&iecy;&icy;&zcy;&bcy;&iecy;&zhcy;&ncy;&ocy;, &iecy;&scy;&lcy;&icy; &mcy;&ycy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&iecy;&mcy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy; &dcy;&lcy;&yacy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&icy;, &pcy;&ocy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&ucy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &pcy;&ocy;&chcy;&tcy;&icy; &vcy;&scy;&iecy;&gcy;&dcy;&acy; &bcy;&ucy;&dcy;&iecy;&tcy; &ncy;&iecy;&mcy;&ncy;&ocy;&gcy;&ocy; &ocy;&pcy;&iecy;&rcy;&iecy;&zhcy;&acy;&tcy;&softcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ycy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &pcy;&ocy;&scy;&lcy;&iecy; &vcy;&ycy;&pcy;&ocy;&lcy;&ncy;&iecy;&ncy;&icy;&yacy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&icy;  &quot;catch-up&quot;  &ncy;&acy; &ucy;&dcy;&acy;&lcy;&iecy;&ncy;&ncy;&ycy;&jcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;. &Ecy;&tcy;&acy; &dcy;&ocy;&pcy;&ocy;&lcy;&ncy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&acy;&yacy; &rcy;&acy;&bcy;&ocy;&tcy;&acy; &ncy;&acy;&icy;&bcy;&ocy;&lcy;&iecy;&iecy; &rcy;&acy;&scy;&tcy;&ocy;&chcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&acy;, &kcy;&ocy;&gcy;&dcy;&acy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &vcy;&ycy;&pcy;&ocy;&lcy;&ncy;&yacy;&iecy;&tcy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&ucy; &gcy;&ocy;&rcy;&acy;&zcy;&dcy;&ocy; &chcy;&acy;&shchcy;&iecy;, &chcy;&iecy;&mcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy; &ocy;&bcy;&rcy;&acy;&bcy;&acy;&tcy;&ycy;&vcy;&acy;&iecy;&tcy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy;, &ncy;&acy;&pcy;&rcy;&icy;&mcy;&iecy;&rcy;, &iecy;&scy;&lcy;&icy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&iecy;&tcy; &iecy;&zhcy;&iecy;&chcy;&acy;&scy;&ncy;&ucy;&yucy; &pcy;&rcy;&iecy;&dcy;&vcy;&acy;&rcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ucy;&yucy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&ucy; &scy; &fcy;&ocy;&ncy;&ocy;&vcy;&ycy;&mcy; &ocy;&bcy;&scy;&lcy;&ucy;&zhcy;&icy;&vcy;&acy;&ncy;&icy;&iecy;&mcy;, &acy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy; &ocy;&bcy;&rcy;&acy;&bcy;&acy;&tcy;&ycy;&vcy;&acy;&iecy;&tcy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy; &iecy;&zhcy;&iecy;&ncy;&iecy;&dcy;&iecy;&lcy;&softcy;&ncy;&ocy;. &Pcy;&ocy; &ecy;&tcy;&ocy;&jcy; &pcy;&rcy;&icy;&chcy;&icy;&ncy;&iecy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &ncy;&iecy; &dcy;&ocy;&lcy;&zhcy;&iecy;&ncy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &dcy;&lcy;&yacy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&icy;, &iecy;&scy;&lcy;&icy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy; &yacy;&vcy;&ncy;&ocy; &ncy;&iecy; &rcy;&iecy;&kcy;&ocy;&mcy;&iecy;&ncy;&dcy;&ocy;&vcy;&acy;&lcy; &ecy;&tcy;&ocy; &chcy;&iecy;&rcy;&iecy;&zcy; &zcy;&ncy;&acy;&chcy;&iecy;&ncy;&icy;&iecy;  <code>bundle.heuristic</code> .</span></p> </li> </ul> </div> </div> <h2 class="text-body-emphasis"  id="_example_bundle_provider_organization"><span data-i18n="07ef0292ebf519250d5916541d500d6860eb200febd344101d91d4ea14befa87/48" data-source="Example bundle provider organization" onmousemove="i18n(this)">&Pcy;&rcy;&icy;&mcy;&iecy;&rcy; &ocy;&rcy;&gcy;&acy;&ncy;&icy;&zcy;&acy;&tscy;&icy;&icy; &pcy;&ocy;&scy;&tcy;&acy;&vcy;&shchcy;&icy;&kcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;</span></h2> <div> <p><span data-i18n="65b442cb1750672aa54a36e4d6a06caf4143880e247f546a85848c0cb537fb82/b1" data-source="The bundle URI feature is intentionally designed to be flexible to different ways a bundle provider wants to organize the object data. However, it can be helpful to have a complete organization model described here so providers can start from that base." onmousemove="i18n(this)">&Fcy;&ucy;&ncy;&kcy;&tscy;&icy;&yacy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &scy;&pcy;&iecy;&tscy;&icy;&acy;&lcy;&softcy;&ncy;&ocy; &rcy;&acy;&zcy;&rcy;&acy;&bcy;&ocy;&tcy;&acy;&ncy;&acy; &tcy;&acy;&kcy;, &chcy;&tcy;&ocy;&bcy;&ycy; &ocy;&bcy;&iecy;&scy;&pcy;&iecy;&chcy;&icy;&tcy;&softcy; &gcy;&icy;&bcy;&kcy;&ocy;&scy;&tcy;&softcy; &vcy; &zcy;&acy;&vcy;&icy;&scy;&icy;&mcy;&ocy;&scy;&tcy;&icy; &ocy;&tcy; &tcy;&ocy;&gcy;&ocy;, &kcy;&acy;&kcy; &pcy;&ocy;&scy;&tcy;&acy;&vcy;&shchcy;&icy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&acy; &khcy;&ocy;&chcy;&iecy;&tcy; &ocy;&rcy;&gcy;&acy;&ncy;&icy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy; &dcy;&acy;&ncy;&ncy;&ycy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&acy;. &Ocy;&dcy;&ncy;&acy;&kcy;&ocy; &mcy;&ocy;&zhcy;&iecy;&tcy; &ocy;&kcy;&acy;&zcy;&acy;&tcy;&softcy;&scy;&yacy; &pcy;&ocy;&lcy;&iecy;&zcy;&ncy;&ycy;&mcy; &icy;&mcy;&iecy;&tcy;&softcy; &ocy;&pcy;&icy;&scy;&acy;&ncy;&ncy;&ucy;&yucy; &zcy;&dcy;&iecy;&scy;&softcy; &pcy;&ocy;&lcy;&ncy;&ucy;&yucy; &mcy;&ocy;&dcy;&iecy;&lcy;&softcy; &ocy;&rcy;&gcy;&acy;&ncy;&icy;&zcy;&acy;&tscy;&icy;&icy;, &chcy;&tcy;&ocy;&bcy;&ycy; &pcy;&ocy;&scy;&tcy;&acy;&vcy;&shchcy;&icy;&kcy;&icy; &mcy;&ocy;&gcy;&lcy;&icy; &ncy;&acy;&chcy;&acy;&tcy;&softcy; &scy; &ecy;&tcy;&ocy;&jcy; &ocy;&scy;&ncy;&ocy;&vcy;&ycy;.</span></p> <p><span data-i18n="503d5ffc52aff4f1be48f20f1afd5bced983afb76edcf79e7a6e8ba2568be4d6/ac" data-source="This example organization is a simplified model of what is used by the GVFS Cache Servers (see section near the end of this document) which have been beneficial in speeding up clones and fetches for very large repositories, although using extra software outside of Git." onmousemove="i18n(this)">&Ecy;&tcy;&ocy;&tcy; &pcy;&rcy;&icy;&mcy;&iecy;&rcy; &ocy;&rcy;&gcy;&acy;&ncy;&icy;&zcy;&acy;&tscy;&icy;&icy; &pcy;&rcy;&iecy;&dcy;&scy;&tcy;&acy;&vcy;&lcy;&yacy;&iecy;&tcy; &scy;&ocy;&bcy;&ocy;&jcy; &ucy;&pcy;&rcy;&ocy;&shchcy;&iecy;&ncy;&ncy;&ucy;&yucy; &mcy;&ocy;&dcy;&iecy;&lcy;&softcy; &tcy;&ocy;&gcy;&ocy;, &chcy;&tcy;&ocy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&iecy;&tcy;&scy;&yacy; &kcy;&ecy;&shcy;-&scy;&iecy;&rcy;&vcy;&iecy;&rcy;&acy;&mcy;&icy; GVFS (&scy;&mcy;. &rcy;&acy;&zcy;&dcy;&iecy;&lcy; &vcy; &kcy;&ocy;&ncy;&tscy;&iecy; &ecy;&tcy;&ocy;&gcy;&ocy; &dcy;&ocy;&kcy;&ucy;&mcy;&iecy;&ncy;&tcy;&acy;), &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&iecy; &pcy;&ocy;&mcy;&ocy;&gcy;&acy;&yucy;&tcy; &ucy;&scy;&kcy;&ocy;&rcy;&icy;&tcy;&softcy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&iecy; &icy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&ucy; &dcy;&lcy;&yacy; &ocy;&chcy;&iecy;&ncy;&softcy; &bcy;&ocy;&lcy;&softcy;&shcy;&icy;&khcy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&iecy;&vcy;, &khcy;&ocy;&tcy;&yacy; &icy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&yucy;&tcy; &dcy;&ocy;&pcy;&ocy;&lcy;&ncy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;&iecy; &pcy;&rcy;&ocy;&gcy;&rcy;&acy;&mcy;&mcy;&ncy;&ocy;&iecy; &ocy;&bcy;&iecy;&scy;&pcy;&iecy;&chcy;&iecy;&ncy;&icy;&iecy; &vcy;&ncy;&iecy; Git.</span></p> <p><span data-i18n="bd9ad19fcd37cfe0ee8de9d585741bf800390d993017358b1f525b6bdf116002/ef" data-source="The bundle provider deploys servers across multiple geographies. Each server manages its own bundle set. The server can track a number of Git repositories, but provides a bundle list for each based on a pattern. For example, when mirroring a repository at &lt;code&gt;https://&amp;lt;domain&amp;gt;/&amp;lt;org&amp;gt;/&amp;lt;repo&amp;gt;&lt;/code&gt; the bundle server could have its bundle list available at &lt;code&gt;https://&amp;lt;server-url&amp;gt;/&amp;lt;domain&amp;gt;/&amp;lt;org&amp;gt;/&amp;lt;repo&amp;gt;&lt;/code&gt;. The origin Git server can list all of these servers under the &amp;quot;any&amp;quot; mode:" onmousemove="i18n(this)">&Pcy;&ocy;&scy;&tcy;&acy;&vcy;&shchcy;&icy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &rcy;&acy;&zcy;&vcy;&iecy;&rcy;&tcy;&ycy;&vcy;&acy;&iecy;&tcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ycy; &vcy; &ncy;&iecy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&icy;&khcy; &rcy;&iecy;&gcy;&icy;&ocy;&ncy;&acy;&khcy;. &Kcy;&acy;&zhcy;&dcy;&ycy;&jcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy; &ucy;&pcy;&rcy;&acy;&vcy;&lcy;&yacy;&iecy;&tcy; &scy;&vcy;&ocy;&icy;&mcy; &scy;&ocy;&bcy;&scy;&tcy;&vcy;&iecy;&ncy;&ncy;&ycy;&mcy; &ncy;&acy;&bcy;&ocy;&rcy;&ocy;&mcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;. &Scy;&iecy;&rcy;&vcy;&iecy;&rcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &ocy;&tcy;&scy;&lcy;&iecy;&zhcy;&icy;&vcy;&acy;&tcy;&softcy; &ncy;&iecy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&ocy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&iecy;&vcy;  Git , &ncy;&ocy; &pcy;&rcy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&vcy;&lcy;&yacy;&iecy;&tcy; &scy;&pcy;&icy;&scy;&ocy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &dcy;&lcy;&yacy; &kcy;&acy;&zhcy;&dcy;&ocy;&gcy;&ocy; &ncy;&acy; &ocy;&scy;&ncy;&ocy;&vcy;&iecy; &shcy;&acy;&bcy;&lcy;&ocy;&ncy;&acy;. &Ncy;&acy;&pcy;&rcy;&icy;&mcy;&iecy;&rcy;, &pcy;&rcy;&icy; &zcy;&iecy;&rcy;&kcy;&acy;&lcy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&icy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&yacy; &pcy;&ocy; &acy;&dcy;&rcy;&iecy;&scy;&ucy;  <code>https://&lt;domain&gt;/&lt;org&gt;/&lt;repo&gt;</code>  &scy;&iecy;&rcy;&vcy;&iecy;&rcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &icy;&mcy;&iecy;&tcy;&softcy; &scy;&pcy;&icy;&scy;&ocy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;, &dcy;&ocy;&scy;&tcy;&ucy;&pcy;&ncy;&ycy;&jcy; &pcy;&ocy; &acy;&dcy;&rcy;&iecy;&scy;&ucy;  <code>https://&lt;server-url&gt;/&lt;domain&gt;/&lt;org&gt;/&lt;repo&gt;</code> . &Icy;&scy;&khcy;&ocy;&dcy;&ncy;&ycy;&jcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;  Git  &mcy;&ocy;&zhcy;&iecy;&tcy; &pcy;&iecy;&rcy;&iecy;&chcy;&icy;&scy;&lcy;&icy;&tcy;&softcy; &vcy;&scy;&iecy; &ecy;&tcy;&icy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ycy; &vcy; &rcy;&iecy;&zhcy;&icy;&mcy;&iecy;  &quot;any&quot; :</span></p> <div> <div> <pre class="hljs language-ini"><span class="hljs-section">[bundle]</span>
        <span class="hljs-attr">version</span> = <span class="hljs-number">1</span>
        <span class="hljs-attr">mode</span> = any</pre> </div> </div> <div> <div> <pre class="hljs language-csharp">[<span class="hljs-meta">bundle <span class="hljs-string">&quot;eastus&quot;</span></span>]
        uri = https:<span class="hljs-comment">//eastus.example.com/&lt;domain&gt;/&lt;org&gt;/&lt;repo&gt;</span></pre> </div> </div> <div> <div> <pre class="hljs language-csharp">[<span class="hljs-meta">bundle <span class="hljs-string">&quot;europe&quot;</span></span>]
        uri = https:<span class="hljs-comment">//europe.example.com/&lt;domain&gt;/&lt;org&gt;/&lt;repo&gt;</span></pre> </div> </div> <div> <div> <pre class="hljs language-csharp">[<span class="hljs-meta">bundle <span class="hljs-string">&quot;apac&quot;</span></span>]
        uri = https:<span class="hljs-comment">//apac.example.com/&lt;domain&gt;/&lt;org&gt;/&lt;repo&gt;</span></pre> </div> </div> <p><span data-i18n="b39fe79c5591a44a5050afac9d4989f90608b93ab243fe6d807a44f0be1ac4db/03" data-source="This &amp;quot;list of lists&amp;quot; is static and only changes if a bundle server is added or removed." onmousemove="i18n(this)">&Ecy;&tcy;&ocy;&tcy;  &quot;list of lists&quot;  &yacy;&vcy;&lcy;&yacy;&iecy;&tcy;&scy;&yacy;  static  &icy; &icy;&zcy;&mcy;&iecy;&ncy;&yacy;&iecy;&tcy;&scy;&yacy; &tcy;&ocy;&lcy;&softcy;&kcy;&ocy; &vcy; &tcy;&ocy;&mcy; &scy;&lcy;&ucy;&chcy;&acy;&iecy;, &iecy;&scy;&lcy;&icy; &dcy;&ocy;&bcy;&acy;&vcy;&lcy;&yacy;&iecy;&tcy;&scy;&yacy; &icy;&lcy;&icy; &ucy;&dcy;&acy;&lcy;&yacy;&iecy;&tcy;&scy;&yacy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&jcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;.</span></p> <p><span data-i18n="6b1f4373005cb813a83613947cf49f9292a5917b9ce9bdf7b77f5e0d752c928c/65" data-source="Each bundle server manages its own set of bundles. The initial bundle list contains only a single bundle, containing all of the objects received from cloning the repository from the origin server. The list uses the &lt;code&gt;creationToken&lt;/code&gt; heuristic and a &lt;code&gt;creationToken&lt;/code&gt; is made for the bundle based on the server&amp;rsquo;s timestamp." onmousemove="i18n(this)">&Kcy;&acy;&zhcy;&dcy;&ycy;&jcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &ucy;&pcy;&rcy;&acy;&vcy;&lcy;&yacy;&iecy;&tcy; &scy;&vcy;&ocy;&icy;&mcy; &scy;&ocy;&bcy;&scy;&tcy;&vcy;&iecy;&ncy;&ncy;&ycy;&mcy; &ncy;&acy;&bcy;&ocy;&rcy;&ocy;&mcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;. &Icy;&scy;&khcy;&ocy;&dcy;&ncy;&ycy;&jcy; &scy;&pcy;&icy;&scy;&ocy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &scy;&ocy;&dcy;&iecy;&rcy;&zhcy;&icy;&tcy; &tcy;&ocy;&lcy;&softcy;&kcy;&ocy; &ocy;&dcy;&icy;&ncy; &pcy;&acy;&kcy;&iecy;&tcy;, &scy;&ocy;&dcy;&iecy;&rcy;&zhcy;&acy;&shchcy;&icy;&jcy; &vcy;&scy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy;, &pcy;&ocy;&lcy;&ucy;&chcy;&iecy;&ncy;&ncy;&ycy;&iecy; &vcy; &rcy;&iecy;&zcy;&ucy;&lcy;&softcy;&tcy;&acy;&tcy;&iecy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&yacy; &scy; &icy;&scy;&khcy;&ocy;&dcy;&ncy;&ocy;&gcy;&ocy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&acy;. &Vcy; &scy;&pcy;&icy;&scy;&kcy;&iecy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&iecy;&tcy;&scy;&yacy; &ecy;&vcy;&rcy;&icy;&scy;&tcy;&icy;&kcy;&acy;  <code>creationToken</code> , &acy;  <code>creationToken</code>  &scy;&ocy;&zcy;&dcy;&acy;&iecy;&tcy;&scy;&yacy; &dcy;&lcy;&yacy; &pcy;&acy;&kcy;&iecy;&tcy;&acy; &ncy;&acy; &ocy;&scy;&ncy;&ocy;&vcy;&iecy; &vcy;&rcy;&iecy;&mcy;&iecy;&ncy;&ncy;&ocy;&jcy; &mcy;&iecy;&tcy;&kcy;&icy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&acy;.</span></p> <p><span data-i18n="92482371879c36abc6a180d856bbb7c6bc1dd08d5076b613f9e6a43df23843e0/0c" data-source="The bundle server runs regularly-scheduled updates for the bundle list, such as once a day. During this task, the server fetches the latest contents from the origin server and generates a bundle containing the objects reachable from the latest origin refs, but not contained in a previously-computed bundle. This bundle is added to the list, with care that the &lt;code&gt;creationToken&lt;/code&gt; is strictly greater than the previous maximum &lt;code&gt;creationToken&lt;/code&gt;." onmousemove="i18n(this)">&Scy;&iecy;&rcy;&vcy;&iecy;&rcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &rcy;&iecy;&gcy;&ucy;&lcy;&yacy;&rcy;&ncy;&ocy; &vcy;&ycy;&pcy;&ocy;&lcy;&ncy;&yacy;&iecy;&tcy; &ocy;&bcy;&ncy;&ocy;&vcy;&lcy;&iecy;&ncy;&icy;&yacy; &scy;&pcy;&icy;&scy;&kcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;, &ncy;&acy;&pcy;&rcy;&icy;&mcy;&iecy;&rcy;, &rcy;&acy;&zcy; &vcy; &dcy;&iecy;&ncy;&softcy;. &Vcy;&ocy; &vcy;&rcy;&iecy;&mcy;&yacy; &ecy;&tcy;&ocy;&jcy; &zcy;&acy;&dcy;&acy;&chcy;&icy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy; &icy;&zcy;&vcy;&lcy;&iecy;&kcy;&acy;&iecy;&tcy; &pcy;&ocy;&scy;&lcy;&iecy;&dcy;&ncy;&iecy;&iecy; &scy;&ocy;&dcy;&iecy;&rcy;&zhcy;&icy;&mcy;&ocy;&iecy; &scy; &icy;&scy;&khcy;&ocy;&dcy;&ncy;&ocy;&gcy;&ocy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&acy; &icy; &gcy;&iecy;&ncy;&iecy;&rcy;&icy;&rcy;&ucy;&iecy;&tcy; &pcy;&acy;&kcy;&iecy;&tcy;, &scy;&ocy;&dcy;&iecy;&rcy;&zhcy;&acy;&shchcy;&icy;&jcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy;, &dcy;&ocy;&scy;&tcy;&ucy;&pcy;&ncy;&ycy;&iecy; &icy;&zcy; &pcy;&ocy;&scy;&lcy;&iecy;&dcy;&ncy;&icy;&khcy; &scy;&scy;&ycy;&lcy;&ocy;&kcy; &ncy;&acy; &icy;&scy;&tcy;&ocy;&chcy;&ncy;&icy;&kcy;, &ncy;&ocy; &ncy;&iecy; &scy;&ocy;&dcy;&iecy;&rcy;&zhcy;&acy;&shchcy;&icy;&iecy;&scy;&yacy; &vcy; &rcy;&acy;&ncy;&iecy;&iecy; &vcy;&ycy;&chcy;&icy;&scy;&lcy;&iecy;&ncy;&ncy;&ocy;&mcy; &pcy;&acy;&kcy;&iecy;&tcy;&iecy;. &Ecy;&tcy;&acy; &scy;&vcy;&yacy;&zcy;&kcy;&acy; &dcy;&ocy;&bcy;&acy;&vcy;&lcy;&iecy;&ncy;&acy; &ZeroWidthSpace;&ZeroWidthSpace;&vcy; &scy;&pcy;&icy;&scy;&ocy;&kcy; &scy; &ucy;&chcy;&iecy;&tcy;&ocy;&mcy; &tcy;&ocy;&gcy;&ocy;, &chcy;&tcy;&ocy;&bcy;&ycy;  <code>creationToken</code>  &bcy;&ycy;&lcy; &scy;&tcy;&rcy;&ocy;&gcy;&ocy; &bcy;&ocy;&lcy;&softcy;&shcy;&iecy; &pcy;&rcy;&iecy;&dcy;&ycy;&dcy;&ucy;&shchcy;&iecy;&gcy;&ocy; &mcy;&acy;&kcy;&scy;&icy;&mcy;&ucy;&mcy;&acy;  <code>creationToken</code> .</span></p> <p><span data-i18n="226ac2dfa6a5c245cd57eeda27c10ff59d0abb3fbb83a5c8e8ebcb7c120708fd/84" data-source="When the bundle list grows too large, say more than 30 bundles, then the oldest &amp;quot;&lt;code&gt;N&lt;/code&gt; minus 30&amp;quot; bundles are combined into a single bundle. This bundle&amp;rsquo;s &lt;code&gt;creationToken&lt;/code&gt; is equal to the maximum &lt;code&gt;creationToken&lt;/code&gt; among the merged bundles." onmousemove="i18n(this)">&Kcy;&ocy;&gcy;&dcy;&acy; &scy;&pcy;&icy;&scy;&ocy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &scy;&tcy;&acy;&ncy;&ocy;&vcy;&icy;&tcy;&scy;&yacy; &scy;&lcy;&icy;&shcy;&kcy;&ocy;&mcy; &bcy;&ocy;&lcy;&softcy;&shcy;&icy;&mcy;, &scy;&kcy;&acy;&zhcy;&iecy;&mcy;, &bcy;&ocy;&lcy;&iecy;&iecy; 30 &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;, &scy;&acy;&mcy;&ycy;&iecy; &scy;&tcy;&acy;&rcy;&ycy;&iecy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy;  &quot;  <code>N</code>   minus 30&quot;  &ocy;&bcy;&hardcy;&iecy;&dcy;&icy;&ncy;&yacy;&yucy;&tcy;&scy;&yacy; &vcy; &ocy;&dcy;&icy;&ncy; &pcy;&acy;&kcy;&iecy;&tcy;.  <code>creationToken</code>  &ecy;&tcy;&ocy;&gcy;&ocy; &pcy;&acy;&kcy;&iecy;&tcy;&acy; &rcy;&acy;&vcy;&iecy;&ncy; &mcy;&acy;&kcy;&scy;&icy;&mcy;&acy;&lcy;&softcy;&ncy;&ocy;&mcy;&ucy;  <code>creationToken</code>  &scy;&rcy;&iecy;&dcy;&icy; &ocy;&bcy;&hardcy;&iecy;&dcy;&icy;&ncy;&iecy;&ncy;&ncy;&ycy;&khcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;.</span></p> <p><span data-i18n="952ca40e9c2e8874813d56267d87cba371b469393d7d71eede0a487f9180dcf7/49" data-source="An example bundle list is provided here, although it only has two daily bundles and not a full list of 30:" onmousemove="i18n(this)">&Zcy;&dcy;&iecy;&scy;&softcy; &pcy;&rcy;&icy;&vcy;&iecy;&dcy;&iecy;&ncy; &pcy;&rcy;&icy;&mcy;&iecy;&rcy; &scy;&pcy;&icy;&scy;&kcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;, &khcy;&ocy;&tcy;&yacy; &vcy; &ncy;&iecy;&mcy; &iecy;&scy;&tcy;&softcy; &tcy;&ocy;&lcy;&softcy;&kcy;&ocy; &dcy;&vcy;&acy; &iecy;&zhcy;&iecy;&dcy;&ncy;&iecy;&vcy;&ncy;&ycy;&khcy; &pcy;&acy;&kcy;&iecy;&tcy;&acy;, &acy; &ncy;&iecy; &pcy;&ocy;&lcy;&ncy;&ycy;&jcy; &scy;&pcy;&icy;&scy;&ocy;&kcy; &icy;&zcy; 30:</span></p> <div> <div> <pre class="hljs language-ini"><span class="hljs-section">[bundle]</span>
        <span class="hljs-attr">version</span> = <span class="hljs-number">1</span>
        <span class="hljs-attr">mode</span> = all
        <span class="hljs-attr">heuristic</span> = creationToken</pre> </div> </div> <div> <div> <pre class="hljs language-ini"><span class="hljs-section">[bundle &quot;2022-02-13-1644770820-daily&quot;]</span>
        <span class="hljs-attr">uri</span> = https://eastus.example.com/&lt;domain&gt;/&lt;org&gt;/&lt;repo&gt;/<span class="hljs-number">2022</span>-<span class="hljs-number">02</span>-<span class="hljs-number">09</span>-<span class="hljs-number">1644770820</span>-daily.bundle
        <span class="hljs-attr">creationToken</span> = <span class="hljs-number">1644770820</span></pre> </div> </div> <div> <div> <pre class="hljs language-ini"><span class="hljs-section">[bundle &quot;2022-02-09-1644442601-daily&quot;]</span>
        <span class="hljs-attr">uri</span> = https://eastus.example.com/&lt;domain&gt;/&lt;org&gt;/&lt;repo&gt;/<span class="hljs-number">2022</span>-<span class="hljs-number">02</span>-<span class="hljs-number">09</span>-<span class="hljs-number">1644442601</span>-daily.bundle
        <span class="hljs-attr">creationToken</span> = <span class="hljs-number">1644442601</span></pre> </div> </div> <div> <div> <pre class="hljs language-ini"><span class="hljs-section">[bundle &quot;2022-02-02-1643842562&quot;]</span>
        <span class="hljs-attr">uri</span> = https://eastus.example.com/&lt;domain&gt;/&lt;org&gt;/&lt;repo&gt;/<span class="hljs-number">2022</span>-<span class="hljs-number">02</span>-<span class="hljs-number">02</span>-<span class="hljs-number">1643842562</span>.bundle
        <span class="hljs-attr">creationToken</span> = <span class="hljs-number">1643842562</span></pre> </div> </div> <p><span data-i18n="f71314dd1d8b5f1121e75a21db39bd0a9e0b61635527133eaca9bb4b1143e896/cc" data-source="To avoid storing and serving object data in perpetuity despite becoming unreachable in the origin server, this bundle merge can be more careful. Instead of taking an absolute union of the old bundles, instead the bundle can be created by looking at the newer bundles and ensuring that their necessary commits are all available in this merged bundle (or in another one of the newer bundles). This allows &amp;quot;expiring&amp;quot; object data that is not being used by new commits in this window of time. That data could be reintroduced by a later push." onmousemove="i18n(this)">&CHcy;&tcy;&ocy;&bcy;&ycy; &icy;&zcy;&bcy;&iecy;&zhcy;&acy;&tcy;&softcy; &pcy;&ocy;&scy;&tcy;&ocy;&yacy;&ncy;&ncy;&ocy;&gcy;&ocy; &khcy;&rcy;&acy;&ncy;&iecy;&ncy;&icy;&yacy; &icy; &ocy;&bcy;&scy;&lcy;&ucy;&zhcy;&icy;&vcy;&acy;&ncy;&icy;&yacy; &dcy;&acy;&ncy;&ncy;&ycy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&acy;, &dcy;&acy;&zhcy;&iecy; &iecy;&scy;&lcy;&icy; &ocy;&ncy;&icy; &scy;&tcy;&acy;&ncy;&ocy;&vcy;&yacy;&tcy;&scy;&yacy; &ncy;&iecy;&dcy;&ocy;&scy;&tcy;&ucy;&pcy;&ncy;&ycy;&mcy;&icy; &ncy;&acy; &icy;&scy;&khcy;&ocy;&dcy;&ncy;&ocy;&mcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&iecy;, &ecy;&tcy;&ocy; &ocy;&bcy;&hardcy;&iecy;&dcy;&icy;&ncy;&iecy;&ncy;&icy;&iecy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &bcy;&ycy;&tcy;&softcy; &bcy;&ocy;&lcy;&iecy;&iecy; &ocy;&scy;&tcy;&ocy;&rcy;&ocy;&zhcy;&ncy;&ycy;&mcy;. &Vcy;&mcy;&iecy;&scy;&tcy;&ocy; &acy;&bcy;&scy;&ocy;&lcy;&yucy;&tcy;&ncy;&ocy;&gcy;&ocy; &ocy;&bcy;&hardcy;&iecy;&dcy;&icy;&ncy;&iecy;&ncy;&icy;&yacy; &scy;&tcy;&acy;&rcy;&ycy;&khcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &mcy;&ocy;&zhcy;&ncy;&ocy; &scy;&ocy;&zcy;&dcy;&acy;&tcy;&softcy; &pcy;&acy;&kcy;&iecy;&tcy;, &pcy;&rcy;&ocy;&scy;&mcy;&acy;&tcy;&rcy;&icy;&vcy;&acy;&yacy; &ncy;&ocy;&vcy;&ycy;&iecy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy; &icy; &gcy;&acy;&rcy;&acy;&ncy;&tcy;&icy;&rcy;&ucy;&yacy;, &chcy;&tcy;&ocy; &vcy;&scy;&iecy; &icy;&khcy; &ncy;&iecy;&ocy;&bcy;&khcy;&ocy;&dcy;&icy;&mcy;&ycy;&iecy; &kcy;&ocy;&mcy;&mcy;&icy;&tcy;&ycy; &dcy;&ocy;&scy;&tcy;&ucy;&pcy;&ncy;&ycy; &vcy; &ecy;&tcy;&ocy;&mcy; &ocy;&bcy;&hardcy;&iecy;&dcy;&icy;&ncy;&iecy;&ncy;&ncy;&ocy;&mcy; &pcy;&acy;&kcy;&iecy;&tcy;&iecy; (&icy;&lcy;&icy; &vcy; &dcy;&rcy;&ucy;&gcy;&ocy;&mcy; &icy;&zcy; &bcy;&ocy;&lcy;&iecy;&iecy; &ncy;&ocy;&vcy;&ycy;&khcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;). &Ecy;&tcy;&ocy; &pcy;&ocy;&zcy;&vcy;&ocy;&lcy;&yacy;&iecy;&tcy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy; &dcy;&acy;&ncy;&ncy;&ycy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&acy;  &quot;expiring&quot; , &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&iecy; &ncy;&iecy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&yucy;&tcy;&scy;&yacy; &ncy;&ocy;&vcy;&ycy;&mcy;&icy; &kcy;&ocy;&mcy;&mcy;&icy;&tcy;&acy;&mcy;&icy; &vcy; &ecy;&tcy;&ocy;&mcy; &ocy;&kcy;&ncy;&iecy; &vcy;&rcy;&iecy;&mcy;&iecy;&ncy;&icy;. &Ecy;&tcy;&icy; &dcy;&acy;&ncy;&ncy;&ycy;&iecy; &mcy;&ocy;&gcy;&ucy;&tcy; &bcy;&ycy;&tcy;&softcy; &pcy;&ocy;&vcy;&tcy;&ocy;&rcy;&ncy;&ocy; &pcy;&rcy;&iecy;&dcy;&scy;&tcy;&acy;&vcy;&lcy;&iecy;&ncy;&ycy; &pcy;&ocy;&zcy;&zhcy;&iecy;.</span></p> <p><span data-i18n="ae36c4188e32944107c4eebb201510f43972a0c01b3ea006bbbe015f88ac09f1/20" data-source="The intention of this data organization has two main goals. First, initial clones of the repository become faster by downloading precomputed object data from a closer source. Second, &lt;code&gt;git fetch&lt;/code&gt; commands can be faster, especially if the client has not fetched for a few days. However, if a client does not fetch for 30 days, then the bundle list organization would cause redownloading a large amount of object data." onmousemove="i18n(this)">&TScy;&iecy;&lcy;&softcy; &tcy;&acy;&kcy;&ocy;&jcy; &ocy;&rcy;&gcy;&acy;&ncy;&icy;&zcy;&acy;&tscy;&icy;&icy; &dcy;&acy;&ncy;&ncy;&ycy;&khcy; &pcy;&rcy;&iecy;&scy;&lcy;&iecy;&dcy;&ucy;&iecy;&tcy; &dcy;&vcy;&iecy; &ocy;&scy;&ncy;&ocy;&vcy;&ncy;&ycy;&iecy; &tscy;&iecy;&lcy;&icy;. &Vcy;&ocy;-&pcy;&iecy;&rcy;&vcy;&ycy;&khcy;, &pcy;&iecy;&rcy;&vcy;&ocy;&ncy;&acy;&chcy;&acy;&lcy;&softcy;&ncy;&ycy;&iecy; &kcy;&lcy;&ocy;&ncy;&ycy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&yacy; &rcy;&acy;&bcy;&ocy;&tcy;&acy;&yucy;&tcy; &bcy;&ycy;&scy;&tcy;&rcy;&iecy;&iecy; &zcy;&acy; &scy;&chcy;&iecy;&tcy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&icy; &pcy;&rcy;&iecy;&dcy;&vcy;&acy;&rcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy; &vcy;&ycy;&chcy;&icy;&scy;&lcy;&iecy;&ncy;&ncy;&ycy;&khcy; &dcy;&acy;&ncy;&ncy;&ycy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&acy; &icy;&zcy; &bcy;&ocy;&lcy;&iecy;&iecy; &bcy;&lcy;&icy;&zcy;&kcy;&ocy;&gcy;&ocy; &icy;&scy;&tcy;&ocy;&chcy;&ncy;&icy;&kcy;&acy;. &Vcy;&ocy;-&vcy;&tcy;&ocy;&rcy;&ycy;&khcy;, &kcy;&ocy;&mcy;&acy;&ncy;&dcy;&ycy;  <code>git fetch</code>  &mcy;&ocy;&gcy;&ucy;&tcy; &vcy;&ycy;&pcy;&ocy;&lcy;&ncy;&yacy;&tcy;&softcy;&scy;&yacy; &bcy;&ycy;&scy;&tcy;&rcy;&iecy;&iecy;, &ocy;&scy;&ocy;&bcy;&iecy;&ncy;&ncy;&ocy; &iecy;&scy;&lcy;&icy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &ncy;&iecy; &pcy;&ocy;&lcy;&ucy;&chcy;&acy;&lcy; &dcy;&acy;&ncy;&ncy;&ycy;&iecy; &vcy; &tcy;&iecy;&chcy;&iecy;&ncy;&icy;&iecy; &ncy;&iecy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&icy;&khcy; &dcy;&ncy;&iecy;&jcy;. &Ocy;&dcy;&ncy;&acy;&kcy;&ocy; &iecy;&scy;&lcy;&icy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &ncy;&iecy; &pcy;&ocy;&lcy;&ucy;&chcy;&acy;&iecy;&tcy; &dcy;&acy;&ncy;&ncy;&ycy;&iecy; &vcy; &tcy;&iecy;&chcy;&iecy;&ncy;&icy;&iecy; 30 &dcy;&ncy;&iecy;&jcy;, &tcy;&ocy; &ocy;&rcy;&gcy;&acy;&ncy;&icy;&zcy;&acy;&tscy;&icy;&yacy; &scy;&pcy;&icy;&scy;&kcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &pcy;&rcy;&icy;&vcy;&iecy;&dcy;&iecy;&tcy; &kcy; &pcy;&ocy;&vcy;&tcy;&ocy;&rcy;&ncy;&ocy;&jcy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&iecy; &bcy;&ocy;&lcy;&softcy;&shcy;&ocy;&gcy;&ocy; &ocy;&bcy;&hardcy;&iecy;&mcy;&acy; &dcy;&acy;&ncy;&ncy;&ycy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&acy;.</span></p> <p><span data-i18n="49eaefa74b7e5609b888fb2292eaa3be3e2ed63a678c17bfcbf15e716a2fce37/9d" data-source="One way to make this organization more useful to users who fetch frequently is to have more frequent bundle creation. For example, bundles could be created every hour, and then once a day those &amp;quot;hourly&amp;quot; bundles could be merged into a &amp;quot;daily&amp;quot; bundle. The daily bundles are merged into the oldest bundle after 30 days." onmousemove="i18n(this)">&Ocy;&dcy;&icy;&ncy; &icy;&zcy; &scy;&pcy;&ocy;&scy;&ocy;&bcy;&ocy;&vcy; &scy;&dcy;&iecy;&lcy;&acy;&tcy;&softcy; &ecy;&tcy;&ucy; &ocy;&rcy;&gcy;&acy;&ncy;&icy;&zcy;&acy;&tscy;&icy;&yucy; &bcy;&ocy;&lcy;&iecy;&iecy; &pcy;&ocy;&lcy;&iecy;&zcy;&ncy;&ocy;&jcy; &dcy;&lcy;&yacy; &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&iecy;&jcy;, &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&iecy; &chcy;&acy;&scy;&tcy;&ocy; &pcy;&ocy;&lcy;&ucy;&chcy;&acy;&yucy;&tcy; &dcy;&acy;&ncy;&ncy;&ycy;&iecy;, &mdash; &ecy;&tcy;&ocy; &chcy;&acy;&shchcy;&iecy; &scy;&ocy;&zcy;&dcy;&acy;&vcy;&acy;&tcy;&softcy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy;. &Ncy;&acy;&pcy;&rcy;&icy;&mcy;&iecy;&rcy;, &pcy;&acy;&kcy;&iecy;&tcy;&ycy; &mcy;&ocy;&zhcy;&ncy;&ocy; &scy;&ocy;&zcy;&dcy;&acy;&vcy;&acy;&tcy;&softcy; &kcy;&acy;&zhcy;&dcy;&ycy;&jcy; &chcy;&acy;&scy;, &acy; &zcy;&acy;&tcy;&iecy;&mcy; &rcy;&acy;&zcy; &vcy; &dcy;&iecy;&ncy;&softcy; &ecy;&tcy;&icy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy;  &quot;hourly&quot;  &mcy;&ocy;&zhcy;&ncy;&ocy; &ocy;&bcy;&hardcy;&iecy;&dcy;&icy;&ncy;&yacy;&tcy;&softcy; &vcy; &pcy;&acy;&kcy;&iecy;&tcy;  &quot;daily&quot; . &IEcy;&zhcy;&iecy;&dcy;&ncy;&iecy;&vcy;&ncy;&ycy;&iecy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy; &ocy;&bcy;&hardcy;&iecy;&dcy;&icy;&ncy;&yacy;&yucy;&tcy;&scy;&yacy; &scy; &scy;&acy;&mcy;&ycy;&mcy; &scy;&tcy;&acy;&rcy;&ycy;&mcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&mcy; &chcy;&iecy;&rcy;&iecy;&zcy; 30&nbsp;&dcy;&ncy;&iecy;&jcy;.</span></p> <p><span data-i18n="7d655dd17073cf2265c53c2939255b3218067dee91c35072af2faf90822a9dc5/42" data-source="It is recommended that this bundle strategy is repeated with the &lt;code&gt;blob:none&lt;/code&gt; filter if clients of this repository are expecting to use blobless partial clones. This list of blobless bundles stays in the same list as the full bundles, but uses the &lt;code&gt;bundle.&amp;lt;id&amp;gt;.filter&lt;/code&gt; key to separate the two groups. For very large repositories, the bundle provider may want to &lt;code&gt;only&lt;/code&gt; provide blobless bundles." onmousemove="i18n(this)">&Rcy;&iecy;&kcy;&ocy;&mcy;&iecy;&ncy;&dcy;&ucy;&iecy;&tcy;&scy;&yacy; &pcy;&ocy;&vcy;&tcy;&ocy;&rcy;&icy;&tcy;&softcy; &ecy;&tcy;&ucy; &scy;&tcy;&rcy;&acy;&tcy;&iecy;&gcy;&icy;&yucy; &pcy;&acy;&kcy;&iecy;&tcy;&acy; &scy; &fcy;&icy;&lcy;&softcy;&tcy;&rcy;&ocy;&mcy;  <code>blob:none</code> , &iecy;&scy;&lcy;&icy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&ycy; &ecy;&tcy;&ocy;&gcy;&ocy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&yacy; &pcy;&lcy;&acy;&ncy;&icy;&rcy;&ucy;&yucy;&tcy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy; &chcy;&acy;&scy;&tcy;&icy;&chcy;&ncy;&ycy;&iecy; &kcy;&lcy;&ocy;&ncy;&ycy; &bcy;&iecy;&zcy; &bcy;&ocy;&lcy;&softcy;&shcy;&icy;&khcy; &dcy;&vcy;&ocy;&icy;&chcy;&ncy;&ycy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;. &Ecy;&tcy;&ocy;&tcy; &scy;&pcy;&icy;&scy;&ocy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &bcy;&iecy;&zcy; &bcy;&ocy;&lcy;&softcy;&shcy;&icy;&khcy; &dcy;&vcy;&ocy;&icy;&chcy;&ncy;&ycy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy; &ocy;&scy;&tcy;&acy;&iecy;&tcy;&scy;&yacy; &vcy; &tcy;&ocy;&mcy; &zhcy;&iecy; &scy;&pcy;&icy;&scy;&kcy;&iecy;, &chcy;&tcy;&ocy; &icy; &pcy;&ocy;&lcy;&ncy;&ycy;&iecy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy;, &ncy;&ocy; &dcy;&lcy;&yacy; &rcy;&acy;&zcy;&dcy;&iecy;&lcy;&iecy;&ncy;&icy;&yacy; &dcy;&vcy;&ucy;&khcy; &gcy;&rcy;&ucy;&pcy;&pcy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&iecy;&tcy;&scy;&yacy; &kcy;&lcy;&yucy;&chcy;  <code>bundle.&lt;id&gt;.filter</code> . &Dcy;&lcy;&yacy; &ocy;&chcy;&iecy;&ncy;&softcy; &bcy;&ocy;&lcy;&softcy;&shcy;&icy;&khcy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&iecy;&vcy; &pcy;&ocy;&scy;&tcy;&acy;&vcy;&shchcy;&icy;&kcy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &zcy;&acy;&khcy;&ocy;&tcy;&iecy;&tcy;&softcy;  <code>only</code>  &pcy;&rcy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&vcy;&icy;&tcy;&softcy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy; &bcy;&iecy;&zcy; &bcy;&ocy;&lcy;&softcy;&shcy;&icy;&khcy; &dcy;&vcy;&ocy;&icy;&chcy;&ncy;&ycy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;.</span></p> </div> <h2 class="text-body-emphasis"  id="_implementation_plan"><span data-i18n="0e1b00cae5c823724afa83d9f647483e29f3a3431d197e17140837d7b27bc52c/13" data-source="Implementation plan" onmousemove="i18n(this)">Implementation plan</span></h2> <div> <p><span data-i18n="b13bdc1798e995905887200f4a0ea9d8155b876cf1f1e96b8f7977bb56b553eb/31" data-source="This design document is being submitted on its own as an aspirational document, with the goal of implementing all of the mentioned client features over the course of several patch series. Here is a potential outline for submitting these features:" onmousemove="i18n(this)">&Ecy;&tcy;&ocy;&tcy; &pcy;&rcy;&ocy;&iecy;&kcy;&tcy;&ncy;&ycy;&jcy; &dcy;&ocy;&kcy;&ucy;&mcy;&iecy;&ncy;&tcy; &pcy;&ocy;&dcy;&acy;&iecy;&tcy;&scy;&yacy; &ocy;&tcy;&dcy;&iecy;&lcy;&softcy;&ncy;&ocy; &kcy;&acy;&kcy; &zhcy;&iecy;&lcy;&acy;&tcy;&iecy;&lcy;&softcy;&ncy;&ycy;&jcy; &dcy;&ocy;&kcy;&ucy;&mcy;&iecy;&ncy;&tcy; &scy; &tscy;&iecy;&lcy;&softcy;&yucy; &rcy;&iecy;&acy;&lcy;&icy;&zcy;&acy;&tscy;&icy;&icy; &vcy;&scy;&iecy;&khcy; &ucy;&pcy;&ocy;&mcy;&yacy;&ncy;&ucy;&tcy;&ycy;&khcy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&scy;&kcy;&icy;&khcy; &fcy;&ucy;&ncy;&kcy;&tscy;&icy;&jcy; &vcy; &tcy;&iecy;&chcy;&iecy;&ncy;&icy;&iecy; &ncy;&iecy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&icy;&khcy; &scy;&iecy;&rcy;&icy;&jcy; &pcy;&acy;&tcy;&chcy;&iecy;&jcy;. &Vcy;&ocy;&tcy; &pcy;&ocy;&tcy;&iecy;&ncy;&tscy;&icy;&acy;&lcy;&softcy;&ncy;&ycy;&jcy; &pcy;&lcy;&acy;&ncy; &ocy;&tcy;&pcy;&rcy;&acy;&vcy;&kcy;&icy; &ecy;&tcy;&icy;&khcy; &fcy;&ucy;&ncy;&kcy;&tscy;&icy;&jcy;:</span></p> <div> <ol> <li> <p><span data-i18n="bbfb94ed061157d1620db6061324cc2853a7538af32f828df221c610a9097b4a/d3" data-source="Integrate bundle URIs into &lt;code&gt;git clone&lt;/code&gt; with a &lt;code&gt;--bundle-uri&lt;/code&gt; option. This will include a new &lt;code&gt;git fetch --bundle-uri&lt;/code&gt; mode for use as the implementation underneath &lt;code&gt;git clone&lt;/code&gt;. The initial version here will expect a single bundle at the given URI." onmousemove="i18n(this)">&Icy;&ncy;&tcy;&iecy;&gcy;&rcy;&icy;&rcy;&ucy;&jcy;&tcy;&iecy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &vcy;  <code>git clone</code>  &scy; &pcy;&ocy;&mcy;&ocy;&shchcy;&softcy;&yucy; &ocy;&pcy;&tscy;&icy;&icy;  <code>--bundle-uri</code> . &Ecy;&tcy;&ocy; &bcy;&ucy;&dcy;&iecy;&tcy; &vcy;&kcy;&lcy;&yucy;&chcy;&acy;&tcy;&softcy; &ncy;&ocy;&vcy;&ycy;&jcy; &rcy;&iecy;&zhcy;&icy;&mcy;  <code>git fetch --bundle-uri</code> , &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&jcy; &bcy;&ucy;&dcy;&iecy;&tcy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy;&scy;&yacy; &vcy; &kcy;&acy;&chcy;&iecy;&scy;&tcy;&vcy;&iecy; &rcy;&iecy;&acy;&lcy;&icy;&zcy;&acy;&tscy;&icy;&icy; &pcy;&ocy;&dcy;  <code>git clone</code> . &Pcy;&iecy;&rcy;&vcy;&ocy;&ncy;&acy;&chcy;&acy;&lcy;&softcy;&ncy;&acy;&yacy; &vcy;&iecy;&rcy;&scy;&icy;&yacy; &zcy;&dcy;&iecy;&scy;&softcy; &ocy;&zhcy;&icy;&dcy;&acy;&iecy;&tcy; &ocy;&dcy;&icy;&ncy; &pcy;&acy;&kcy;&iecy;&tcy; &pcy;&ocy; &dcy;&acy;&ncy;&ncy;&ocy;&mcy;&ucy; URI.</span></p> </li> <li> <p><span data-i18n="d0d4cf5ce07603b98ede373884577cf4ceea1e880ee4e5b37a2152dc0f26fdae/37" data-source="Implement the ability to parse a bundle list from a bundle URI and update the &lt;code&gt;git fetch --bundle-uri&lt;/code&gt; logic to properly distinguish between &lt;code&gt;bundle.mode&lt;/code&gt; options. Specifically design the feature so that the config format parsing feeds a list of key-value pairs into the bundle list logic." onmousemove="i18n(this)">&Rcy;&iecy;&acy;&lcy;&icy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy; &vcy;&ocy;&zcy;&mcy;&ocy;&zhcy;&ncy;&ocy;&scy;&tcy;&softcy; &acy;&ncy;&acy;&lcy;&icy;&zcy;&acy; &scy;&pcy;&icy;&scy;&kcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &icy;&zcy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &icy; &ocy;&bcy;&ncy;&ocy;&vcy;&icy;&tcy;&softcy; &lcy;&ocy;&gcy;&icy;&kcy;&ucy;  <code>git fetch --bundle-uri</code> , &chcy;&tcy;&ocy;&bcy;&ycy; &pcy;&rcy;&acy;&vcy;&icy;&lcy;&softcy;&ncy;&ocy; &rcy;&acy;&zcy;&lcy;&icy;&chcy;&acy;&tcy;&softcy; &pcy;&acy;&rcy;&acy;&mcy;&iecy;&tcy;&rcy;&ycy;  <code>bundle.mode</code> . &Scy;&pcy;&iecy;&tscy;&icy;&acy;&lcy;&softcy;&ncy;&ocy; &scy;&pcy;&rcy;&ocy;&iecy;&kcy;&tcy;&icy;&rcy;&ucy;&jcy;&tcy;&iecy; &ecy;&tcy;&ucy; &fcy;&ucy;&ncy;&kcy;&tscy;&icy;&yucy; &tcy;&acy;&kcy;, &chcy;&tcy;&ocy;&bcy;&ycy; &acy;&ncy;&acy;&lcy;&icy;&zcy; &fcy;&ocy;&rcy;&mcy;&acy;&tcy;&acy; &kcy;&ocy;&ncy;&fcy;&icy;&gcy;&ucy;&rcy;&acy;&tscy;&icy;&icy; &pcy;&iecy;&rcy;&iecy;&dcy;&acy;&vcy;&acy;&lcy; &scy;&pcy;&icy;&scy;&ocy;&kcy; &pcy;&acy;&rcy; &kcy;&lcy;&yucy;&chcy;-&zcy;&ncy;&acy;&chcy;&iecy;&ncy;&icy;&iecy; &vcy; &lcy;&ocy;&gcy;&icy;&kcy;&ucy; &scy;&pcy;&icy;&scy;&kcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;.</span></p> </li> <li> <p><span data-i18n="55da2aa6e59d90e6fb616773a1b22b7a2d8a438dd4282283c4740a451c277eba/64" data-source="Create the &lt;code&gt;bundle-uri&lt;/code&gt; protocol v2 command so Git servers can advertise bundle URIs using the key-value pairs. Plug into the existing key-value input to the bundle list logic. Allow &lt;code&gt;git clone&lt;/code&gt; to discover these bundle URIs and bootstrap the client repository from the bundle data. (This choice is an opt-in via a config option and a command-line option.)" onmousemove="i18n(this)">&Scy;&ocy;&zcy;&dcy;&acy;&jcy;&tcy;&iecy; &kcy;&ocy;&mcy;&acy;&ncy;&dcy;&ucy; &pcy;&rcy;&ocy;&tcy;&ocy;&kcy;&ocy;&lcy;&acy;  <code>bundle-uri</code>  v2, &chcy;&tcy;&ocy;&bcy;&ycy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ycy;  Git  &mcy;&ocy;&gcy;&lcy;&icy; &ocy;&bcy;&hardcy;&yacy;&vcy;&lcy;&yacy;&tcy;&softcy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &scy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&ncy;&icy;&iecy;&mcy; &pcy;&acy;&rcy; &kcy;&lcy;&yucy;&chcy;-&zcy;&ncy;&acy;&chcy;&iecy;&ncy;&icy;&iecy;. &Pcy;&ocy;&dcy;&kcy;&lcy;&yucy;&chcy;&icy;&tcy;&iecy; &scy;&ucy;&shchcy;&iecy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&iecy; &vcy;&khcy;&ocy;&dcy;&ncy;&ycy;&iecy; &dcy;&acy;&ncy;&ncy;&ycy;&iecy; &laquo;&kcy;&lcy;&yucy;&chcy;-&zcy;&ncy;&acy;&chcy;&iecy;&ncy;&icy;&iecy;&raquo; &kcy; &lcy;&ocy;&gcy;&icy;&kcy;&iecy; &scy;&pcy;&icy;&scy;&kcy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy;. &Rcy;&acy;&zcy;&rcy;&iecy;&shcy;&icy;&tcy;&iecy;  <code>git clone</code>  &ocy;&bcy;&ncy;&acy;&rcy;&ucy;&zhcy;&icy;&tcy;&softcy; &ecy;&tcy;&icy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &icy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&icy;&tcy;&softcy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&scy;&kcy;&icy;&jcy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&jcy; &ncy;&acy; &ocy;&scy;&ncy;&ocy;&vcy;&iecy; &dcy;&acy;&ncy;&ncy;&ycy;&khcy; &pcy;&acy;&kcy;&iecy;&tcy;&acy;. (&Ecy;&tcy;&ocy;&tcy; &vcy;&ycy;&bcy;&ocy;&rcy; &ocy;&scy;&ucy;&shchcy;&iecy;&scy;&tcy;&vcy;&lcy;&yacy;&iecy;&tcy;&scy;&yacy; &scy; &pcy;&ocy;&mcy;&ocy;&shchcy;&softcy;&yucy; &pcy;&acy;&rcy;&acy;&mcy;&iecy;&tcy;&rcy;&acy; &kcy;&ocy;&ncy;&fcy;&icy;&gcy;&ucy;&rcy;&acy;&tscy;&icy;&icy; &icy; &pcy;&acy;&rcy;&acy;&mcy;&iecy;&tcy;&rcy;&acy; &kcy;&ocy;&mcy;&acy;&ncy;&dcy;&ncy;&ocy;&jcy; &scy;&tcy;&rcy;&ocy;&kcy;&icy;.)</span></p> </li> <li> <p><span data-i18n="5fc37e420cd1d567faaa2e7a8e3cd867255db86e03a1690059eb151e10f4fa39/3e" data-source="Allow the client to understand the &lt;code&gt;bundle.heuristic&lt;/code&gt; configuration key and the &lt;code&gt;bundle.&amp;lt;id&amp;gt;.creationToken&lt;/code&gt; heuristic. When &lt;code&gt;git clone&lt;/code&gt; discovers a bundle URI with &lt;code&gt;bundle.heuristic&lt;/code&gt;, it configures the client repository to check that bundle URI during later &lt;code&gt;git fetch &amp;lt;remote&amp;gt;&lt;/code&gt; commands." onmousemove="i18n(this)">&Pcy;&ocy;&zcy;&vcy;&ocy;&lcy;&softcy;&tcy;&iecy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&ucy; &pcy;&ocy;&ncy;&yacy;&tcy;&softcy; &kcy;&lcy;&yucy;&chcy; &kcy;&ocy;&ncy;&fcy;&icy;&gcy;&ucy;&rcy;&acy;&tscy;&icy;&icy;  <code>bundle.heuristic</code>  &icy; &ecy;&vcy;&rcy;&icy;&scy;&tcy;&icy;&kcy;&ucy;  <code>bundle.&lt;id&gt;.creationToken</code> . &Kcy;&ocy;&gcy;&dcy;&acy;  <code>git clone</code>  &ocy;&bcy;&ncy;&acy;&rcy;&ucy;&zhcy;&icy;&vcy;&acy;&iecy;&tcy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &scy; &pcy;&ocy;&mcy;&ocy;&shchcy;&softcy;&yucy;  <code>bundle.heuristic</code>  , &ocy;&ncy; &ncy;&acy;&scy;&tcy;&rcy;&acy;&icy;&vcy;&acy;&iecy;&tcy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&scy;&kcy;&icy;&jcy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&jcy; &dcy;&lcy;&yacy; &pcy;&rcy;&ocy;&vcy;&iecy;&rcy;&kcy;&icy; &ecy;&tcy;&ocy;&gcy;&ocy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &vcy;&ocy; &vcy;&rcy;&iecy;&mcy;&yacy; &pcy;&ocy;&scy;&lcy;&iecy;&dcy;&ucy;&yucy;&shchcy;&icy;&khcy; &kcy;&ocy;&mcy;&acy;&ncy;&dcy;  <code>git fetch &lt;remote&gt;</code> .</span></p> </li> <li> <p><span data-i18n="4ffec0afc1346b3f4f90894860aaec61d857416748fdf4e2aaf59aff41f63523/48" data-source="Allow clients to discover bundle URIs during &lt;code&gt;git fetch&lt;/code&gt; and configure a bundle URI for later fetches if &lt;code&gt;bundle.heuristic&lt;/code&gt; is set." onmousemove="i18n(this)">&Rcy;&acy;&zcy;&rcy;&iecy;&shcy;&icy;&tcy;&softcy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&acy;&mcy; &ocy;&bcy;&ncy;&acy;&rcy;&ucy;&zhcy;&icy;&vcy;&acy;&tcy;&softcy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &vcy;&ocy; &vcy;&rcy;&iecy;&mcy;&yacy;  <code>git fetch</code>  &icy; &ncy;&acy;&scy;&tcy;&rcy;&acy;&icy;&vcy;&acy;&tcy;&softcy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy; &dcy;&lcy;&yacy; &pcy;&ocy;&scy;&lcy;&iecy;&dcy;&ucy;&yucy;&shchcy;&icy;&khcy; &vcy;&ycy;&bcy;&ocy;&rcy;&ocy;&kcy;, &iecy;&scy;&lcy;&icy; &ucy;&scy;&tcy;&acy;&ncy;&ocy;&vcy;&lcy;&iecy;&ncy;  <code>bundle.heuristic</code> .</span></p> </li> <li> <p><span data-i18n="5ab84a074b6c7fe5ba4dc0e92bcf7688c3078a723cfc2a4b2b0c3273e6e472cf/08" data-source="Implement the &amp;quot;inspect headers&amp;quot; heuristic to reduce data downloads when the &lt;code&gt;bundle.&amp;lt;id&amp;gt;.creationToken&lt;/code&gt; heuristic is not available." onmousemove="i18n(this)">&Vcy;&ncy;&iecy;&dcy;&rcy;&icy;&tcy;&iecy; &ecy;&vcy;&rcy;&icy;&scy;&tcy;&icy;&kcy;&ucy;  &quot;inspect headers&quot; , &chcy;&tcy;&ocy;&bcy;&ycy; &ucy;&mcy;&iecy;&ncy;&softcy;&shcy;&icy;&tcy;&softcy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&ucy; &dcy;&acy;&ncy;&ncy;&ycy;&khcy;, &kcy;&ocy;&gcy;&dcy;&acy; &ecy;&vcy;&rcy;&icy;&scy;&tcy;&icy;&kcy;&acy;  <code>bundle.&lt;id&gt;.creationToken</code>  &ncy;&iecy;&dcy;&ocy;&scy;&tcy;&ucy;&pcy;&ncy;&acy;.</span></p> </li> </ol> </div> <p><span data-i18n="81f0d5eb5b92bc87f24c71aabc3c17a721033f3c50ef7cf4a54eea4d628ff1ea/02" data-source="As these features are reviewed, this plan might be updated. We also expect that new designs will be discovered and implemented as this feature matures and becomes used in real-world scenarios." onmousemove="i18n(this)">&Pcy;&ocy; &mcy;&iecy;&rcy;&iecy; &pcy;&rcy;&ocy;&vcy;&iecy;&rcy;&kcy;&icy; &ecy;&tcy;&icy;&khcy; &fcy;&ucy;&ncy;&kcy;&tscy;&icy;&jcy; &ecy;&tcy;&ocy;&tcy; &pcy;&lcy;&acy;&ncy; &mcy;&ocy;&zhcy;&iecy;&tcy; &bcy;&ycy;&tcy;&softcy; &ocy;&bcy;&ncy;&ocy;&vcy;&lcy;&iecy;&ncy;. &Mcy;&ycy; &tcy;&acy;&kcy;&zhcy;&iecy; &ocy;&zhcy;&icy;&dcy;&acy;&iecy;&mcy;, &chcy;&tcy;&ocy; &ncy;&ocy;&vcy;&ycy;&iecy; &rcy;&acy;&zcy;&rcy;&acy;&bcy;&ocy;&tcy;&kcy;&icy; &bcy;&ucy;&dcy;&ucy;&tcy; &ocy;&bcy;&ncy;&acy;&rcy;&ucy;&zhcy;&iecy;&ncy;&ycy; &icy; &rcy;&iecy;&acy;&lcy;&icy;&zcy;&ocy;&vcy;&acy;&ncy;&ycy; &pcy;&ocy; &mcy;&iecy;&rcy;&iecy; &tcy;&ocy;&gcy;&ocy;, &kcy;&acy;&kcy; &ecy;&tcy;&acy; &fcy;&ucy;&ncy;&kcy;&tscy;&icy;&yacy; &bcy;&ucy;&dcy;&iecy;&tcy; &rcy;&acy;&zcy;&vcy;&icy;&vcy;&acy;&tcy;&softcy;&scy;&yacy; &icy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy;&scy;&yacy; &vcy; &rcy;&iecy;&acy;&lcy;&softcy;&ncy;&ycy;&khcy; &scy;&tscy;&iecy;&ncy;&acy;&rcy;&icy;&yacy;&khcy;.</span></p> </div> <h2 class="text-body-emphasis"  id="_related_work_packfile_uris"><span data-i18n="fe46dd9fe346e64eb3ebd52794263644ef51578f48083f1137e828d78691b38b/ab" data-source="Related work: packfile uris" onmousemove="i18n(this)">&Scy;&ocy;&pcy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&acy;&yacy; &rcy;&acy;&bcy;&ocy;&tcy;&acy;: &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&jcy; &fcy;&acy;&jcy;&lcy; uris</span></h2> <div> <p><span data-i18n="8e16e38d43bc1945b48ffc59343c2d07fb79cbb7729469435f82f5ba155821e8/a5" data-source="The Git protocol already has a capability where the Git server can list a set of URLs along with the packfile response when serving a client request. The client is then expected to download the packfiles at those locations in order to have a complete understanding of the response." onmousemove="i18n(this)">&Pcy;&rcy;&ocy;&tcy;&ocy;&kcy;&ocy;&lcy;  Git  &ucy;&zhcy;&iecy; &icy;&mcy;&iecy;&iecy;&tcy; &vcy;&ocy;&zcy;&mcy;&ocy;&zhcy;&ncy;&ocy;&scy;&tcy;&softcy;, &pcy;&ocy;&zcy;&vcy;&ocy;&lcy;&yacy;&yucy;&shchcy;&ucy;&yucy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ucy;  Git  &pcy;&iecy;&rcy;&iecy;&chcy;&icy;&scy;&lcy;&yacy;&tcy;&softcy; &ncy;&acy;&bcy;&ocy;&rcy; URL-&acy;&dcy;&rcy;&iecy;&scy;&ocy;&vcy; &vcy;&mcy;&iecy;&scy;&tcy;&iecy; &scy; &ocy;&tcy;&vcy;&iecy;&tcy;&ocy;&mcy; &ncy;&acy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&jcy; &fcy;&acy;&jcy;&lcy; &pcy;&rcy;&icy; &ocy;&bcy;&scy;&lcy;&ucy;&zhcy;&icy;&vcy;&acy;&ncy;&icy;&icy; &zcy;&acy;&pcy;&rcy;&ocy;&scy;&acy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&acy;. &Zcy;&acy;&tcy;&iecy;&mcy; &ocy;&zhcy;&icy;&dcy;&acy;&iecy;&tcy;&scy;&yacy;, &chcy;&tcy;&ocy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&icy;&tcy; &pcy;&acy;&kcy;-&fcy;&acy;&jcy;&lcy;&ycy; &vcy; &ecy;&tcy;&icy;&khcy; &mcy;&iecy;&scy;&tcy;&acy;&khcy;, &chcy;&tcy;&ocy;&bcy;&ycy; &pcy;&ocy;&lcy;&ucy;&chcy;&icy;&tcy;&softcy; &pcy;&ocy;&lcy;&ncy;&ocy;&iecy; &pcy;&rcy;&iecy;&dcy;&scy;&tcy;&acy;&vcy;&lcy;&iecy;&ncy;&icy;&iecy; &ocy;&bcy; &ocy;&tcy;&vcy;&iecy;&tcy;&iecy;.</span></p> <p><span data-i18n="89cdd807ec9155f23eeabaf3c4c51352210014e99a4ae6f5597706ef5d954af2/15" data-source="This mechanism is used by the Gerrit server (implemented with JGit) and has been effective at reducing CPU load and improving user performance for clones." onmousemove="i18n(this)">&Ecy;&tcy;&ocy;&tcy; &mcy;&iecy;&khcy;&acy;&ncy;&icy;&zcy;&mcy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&iecy;&tcy;&scy;&yacy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ocy;&mcy; Gerrit (&rcy;&iecy;&acy;&lcy;&icy;&zcy;&ocy;&vcy;&acy;&ncy; &scy; &pcy;&ocy;&mcy;&ocy;&shchcy;&softcy;&yucy; JGit) &icy; &ecy;&fcy;&fcy;&iecy;&kcy;&tcy;&icy;&vcy;&iecy;&ncy; &dcy;&lcy;&yacy; &scy;&ncy;&icy;&zhcy;&iecy;&ncy;&icy;&yacy; &ncy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&icy; &ncy;&acy; &pcy;&rcy;&ocy;&tscy;&iecy;&scy;&scy;&ocy;&rcy; &icy; &pcy;&ocy;&vcy;&ycy;&shcy;&iecy;&ncy;&icy;&yacy; &pcy;&rcy;&ocy;&icy;&zcy;&vcy;&ocy;&dcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;&scy;&tcy;&icy; &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&iecy;&jcy; &pcy;&rcy;&icy; &rcy;&acy;&bcy;&ocy;&tcy;&iecy; &scy; &kcy;&lcy;&ocy;&ncy;&acy;&mcy;&icy;.</span></p> <p><span data-i18n="c601a7808581d8fbcd3a515958f3494fb6d889bc23744430f556c28ee87579ef/11" data-source="A major downside to this mechanism is that the origin server needs to know &lt;code&gt;exactly&lt;/code&gt; what is in those packfiles, and the packfiles need to be available to the user for some time after the server has responded. This coupling between the origin and the packfile data is difficult to manage." onmousemove="i18n(this)">&Ocy;&scy;&ncy;&ocy;&vcy;&ncy;&ycy;&mcy; &ncy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&tcy;&kcy;&ocy;&mcy; &ecy;&tcy;&ocy;&gcy;&ocy; &mcy;&iecy;&khcy;&acy;&ncy;&icy;&zcy;&mcy;&acy; &yacy;&vcy;&lcy;&yacy;&iecy;&tcy;&scy;&yacy; &tcy;&ocy;, &chcy;&tcy;&ocy; &icy;&scy;&khcy;&ocy;&dcy;&ncy;&ycy;&jcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy; &dcy;&ocy;&lcy;&zhcy;&iecy;&ncy; &zcy;&ncy;&acy;&tcy;&softcy;  <code>exactly</code> , &chcy;&tcy;&ocy; &ncy;&acy;&khcy;&ocy;&dcy;&icy;&tcy;&scy;&yacy; &vcy; &ecy;&tcy;&icy;&khcy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&khcy; &fcy;&acy;&jcy;&lcy;&acy;&khcy;, &acy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&iecy; &fcy;&acy;&jcy;&lcy;&ycy; &dcy;&ocy;&lcy;&zhcy;&ncy;&ycy; &bcy;&ycy;&tcy;&softcy; &dcy;&ocy;&scy;&tcy;&ucy;&pcy;&ncy;&ycy; &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&yucy; &vcy; &tcy;&iecy;&chcy;&iecy;&ncy;&icy;&iecy; &ncy;&iecy;&kcy;&ocy;&tcy;&ocy;&rcy;&ocy;&gcy;&ocy; &vcy;&rcy;&iecy;&mcy;&iecy;&ncy;&icy; &pcy;&ocy;&scy;&lcy;&iecy; &ocy;&tcy;&vcy;&iecy;&tcy;&acy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&acy;. &Ecy;&tcy;&ucy; &scy;&vcy;&yacy;&zcy;&softcy; &mcy;&iecy;&zhcy;&dcy;&ucy; &icy;&scy;&tcy;&ocy;&chcy;&ncy;&icy;&kcy;&ocy;&mcy; &icy; &dcy;&acy;&ncy;&ncy;&ycy;&mcy;&icy; &pcy;&acy;&kcy;&fcy;&acy;&jcy;&lcy;&acy; &tcy;&rcy;&ucy;&dcy;&ncy;&ocy; &kcy;&ocy;&ncy;&tcy;&rcy;&ocy;&lcy;&icy;&rcy;&ocy;&vcy;&acy;&tcy;&softcy;.</span></p> <p><span data-i18n="fd750d1d83e9c8f6e2f1d59cdc3c28ca5715632be37d850c6f831605f55fa780/6c" data-source="Further, this implementation is extremely hard to make work with fetches." onmousemove="i18n(this)">&Kcy;&rcy;&ocy;&mcy;&iecy; &tcy;&ocy;&gcy;&ocy;, &ecy;&tcy;&ucy; &rcy;&iecy;&acy;&lcy;&icy;&zcy;&acy;&tscy;&icy;&yucy; &chcy;&rcy;&iecy;&zcy;&vcy;&ycy;&chcy;&acy;&jcy;&ncy;&ocy; &scy;&lcy;&ocy;&zhcy;&ncy;&ocy; &zcy;&acy;&scy;&tcy;&acy;&vcy;&icy;&tcy;&softcy; &rcy;&acy;&bcy;&ocy;&tcy;&acy;&tcy;&softcy; &scy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&acy;&mcy;&icy;.</span></p> </div> <h2 class="text-body-emphasis"  id="_related_work_gvfs_cache_servers"><span data-i18n="2954d2cb1cb2e1343d1a8e45a3db9725828fd4cf710aea8652400cde8ce7433a/93" data-source="Related work: gvfs cache servers" onmousemove="i18n(this)">&Scy;&ocy;&pcy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&acy;&yacy; &rcy;&acy;&bcy;&ocy;&tcy;&acy;: &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ycy; &kcy;&ecy;&shcy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy; gvfs</span></h2> <div> <p><span data-i18n="fb8cbb423cd356569dd7428d836f7000e2b3e36cd3c11010d6ace076cb975ad3/95" data-source="The GVFS Protocol [2] is a set of HTTP endpoints designed independently of the Git project before Git&amp;rsquo;s partial clone was created. One feature of this protocol is the idea of a &amp;quot;cache server&amp;quot; which can be colocated with build machines or developer offices to transfer Git data without overloading the central server." onmousemove="i18n(this)">&Pcy;&rcy;&ocy;&tcy;&ocy;&kcy;&ocy;&lcy; GVFS [2] &pcy;&rcy;&iecy;&dcy;&scy;&tcy;&acy;&vcy;&lcy;&yacy;&iecy;&tcy; &scy;&ocy;&bcy;&ocy;&jcy; &ncy;&acy;&bcy;&ocy;&rcy; &kcy;&ocy;&ncy;&iecy;&chcy;&ncy;&ycy;&khcy; &tcy;&ocy;&chcy;&iecy;&kcy; HTTP, &rcy;&acy;&zcy;&rcy;&acy;&bcy;&ocy;&tcy;&acy;&ncy;&ncy;&ycy;&khcy; &ncy;&iecy;&zcy;&acy;&vcy;&icy;&scy;&icy;&mcy;&ocy; &ocy;&tcy; &pcy;&rcy;&ocy;&iecy;&kcy;&tcy;&acy;  Git  &dcy;&ocy; &scy;&ocy;&zcy;&dcy;&acy;&ncy;&icy;&yacy; &chcy;&acy;&scy;&tcy;&icy;&chcy;&ncy;&ocy;&gcy;&ocy; &kcy;&lcy;&ocy;&ncy;&acy;  Git . &Ocy;&dcy;&ncy;&ocy;&jcy; &icy;&zcy; &ocy;&scy;&ocy;&bcy;&iecy;&ncy;&ncy;&ocy;&scy;&tcy;&iecy;&jcy; &ecy;&tcy;&ocy;&gcy;&ocy; &pcy;&rcy;&ocy;&tcy;&ocy;&kcy;&ocy;&lcy;&acy; &yacy;&vcy;&lcy;&yacy;&iecy;&tcy;&scy;&yacy; &icy;&dcy;&iecy;&yacy;  &quot;cache server&quot; , &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&jcy; &mcy;&ocy;&zhcy;&ncy;&ocy; &rcy;&acy;&zcy;&mcy;&iecy;&scy;&tcy;&icy;&tcy;&softcy; &rcy;&yacy;&dcy;&ocy;&mcy; &scy;&ocy; &scy;&bcy;&ocy;&rcy;&ocy;&chcy;&ncy;&ycy;&mcy;&icy; &mcy;&acy;&shcy;&icy;&ncy;&acy;&mcy;&icy; &icy;&lcy;&icy; &ocy;&fcy;&icy;&scy;&acy;&mcy;&icy; &rcy;&acy;&zcy;&rcy;&acy;&bcy;&ocy;&tcy;&chcy;&icy;&kcy;&ocy;&vcy; &dcy;&lcy;&yacy; &pcy;&iecy;&rcy;&iecy;&dcy;&acy;&chcy;&icy; &dcy;&acy;&ncy;&ncy;&ycy;&khcy;  Git  &bcy;&iecy;&zcy; &pcy;&iecy;&rcy;&iecy;&gcy;&rcy;&ucy;&zcy;&kcy;&icy; &tscy;&iecy;&ncy;&tcy;&rcy;&acy;&lcy;&softcy;&ncy;&ocy;&gcy;&ocy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&acy;.</span></p> <p><span data-i18n="1872bb2f074331c698a5363761733252098f06bae84192b93c126cfef6807bbb/fd" data-source="The endpoint that VFS for Git is famous for is the &lt;code&gt;GET /gvfs/objects/{oid}&lt;/code&gt; endpoint, which allows downloading an object on-demand. This is a critical piece of the filesystem virtualization of that product." onmousemove="i18n(this)">&Kcy;&ocy;&ncy;&iecy;&chcy;&ncy;&acy;&yacy; &tcy;&ocy;&chcy;&kcy;&acy;, &kcy;&ocy;&tcy;&ocy;&rcy;&ocy;&jcy; &scy;&lcy;&acy;&vcy;&icy;&tcy;&scy;&yacy; VFS &dcy;&lcy;&yacy;  Git , &mdash; &ecy;&tcy;&ocy; &kcy;&ocy;&ncy;&iecy;&chcy;&ncy;&acy;&yacy; &tcy;&ocy;&chcy;&kcy;&acy;  <code>GET /gvfs/objects/{oid}</code> , &kcy;&ocy;&tcy;&ocy;&rcy;&acy;&yacy; &pcy;&ocy;&zcy;&vcy;&ocy;&lcy;&yacy;&iecy;&tcy; &zcy;&acy;&gcy;&rcy;&ucy;&zhcy;&acy;&tcy;&softcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy; &pcy;&ocy; &tcy;&rcy;&iecy;&bcy;&ocy;&vcy;&acy;&ncy;&icy;&yucy;. &Ecy;&tcy;&ocy; &vcy;&acy;&zhcy;&ncy;&acy;&yacy; &chcy;&acy;&scy;&tcy;&softcy; &vcy;&icy;&rcy;&tcy;&ucy;&acy;&lcy;&icy;&zcy;&acy;&tscy;&icy;&icy; &fcy;&acy;&jcy;&lcy;&ocy;&vcy;&ocy;&jcy; &scy;&icy;&scy;&tcy;&iecy;&mcy;&ycy; &ecy;&tcy;&ocy;&gcy;&ocy; &pcy;&rcy;&ocy;&dcy;&ucy;&kcy;&tcy;&acy;.</span></p> <p><span data-i18n="43e981a5b346eb71458535bb91f9abd73fbc6352233bab36a6852b8f26982868/0a" data-source="However, a more subtle need is the &lt;code&gt;GET /gvfs/prefetch?lastPackTimestamp=&amp;lt;t&amp;gt;&lt;/code&gt; endpoint. Given an optional timestamp, the cache server responds with a list of precomputed packfiles containing the commits and trees that were introduced in those time intervals." onmousemove="i18n(this)">&Ocy;&dcy;&ncy;&acy;&kcy;&ocy; &bcy;&ocy;&lcy;&iecy;&iecy; &tcy;&ocy;&ncy;&kcy;&acy;&yacy; &pcy;&ocy;&tcy;&rcy;&iecy;&bcy;&ncy;&ocy;&scy;&tcy;&softcy; &mdash; &ecy;&tcy;&ocy; &kcy;&ocy;&ncy;&iecy;&chcy;&ncy;&acy;&yacy; &tcy;&ocy;&chcy;&kcy;&acy;  <code>GET /gvfs/prefetch?lastPackTimestamp=&lt;t&gt;</code> . &Pcy;&rcy;&icy; &ncy;&acy;&lcy;&icy;&chcy;&icy;&icy; &ncy;&iecy;&ocy;&bcy;&yacy;&zcy;&acy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;&jcy; &vcy;&rcy;&iecy;&mcy;&iecy;&ncy;&ncy;&ocy;&jcy; &mcy;&iecy;&tcy;&kcy;&icy; &kcy;&ecy;&shcy;-&scy;&iecy;&rcy;&vcy;&iecy;&rcy; &ocy;&tcy;&vcy;&iecy;&chcy;&acy;&iecy;&tcy; &scy;&pcy;&icy;&scy;&kcy;&ocy;&mcy; &pcy;&rcy;&iecy;&dcy;&vcy;&acy;&rcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy; &vcy;&ycy;&chcy;&icy;&scy;&lcy;&iecy;&ncy;&ncy;&ycy;&khcy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&khcy; &fcy;&acy;&jcy;&lcy;&ocy;&vcy;, &scy;&ocy;&dcy;&iecy;&rcy;&zhcy;&acy;&shchcy;&icy;&khcy; &kcy;&ocy;&mcy;&mcy;&icy;&tcy;&ycy; &icy; &dcy;&iecy;&rcy;&iecy;&vcy;&softcy;&yacy;, &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&iecy; &bcy;&ycy;&lcy;&icy; &vcy;&vcy;&iecy;&dcy;&iecy;&ncy;&ycy; &vcy; &ecy;&tcy;&icy; &icy;&ncy;&tcy;&iecy;&rcy;&vcy;&acy;&lcy;&ycy; &vcy;&rcy;&iecy;&mcy;&iecy;&ncy;&icy;.</span></p> <p><span data-i18n="4e6e16d3bbc2f4e2dc9cc8471c570e41b56baef9781609964597011f55ec44f4/60" data-source="The cache server computes these &amp;quot;prefetch&amp;quot; packfiles using the following strategy:" onmousemove="i18n(this)">&Kcy;&ecy;&shcy;-&scy;&iecy;&rcy;&vcy;&iecy;&rcy; &vcy;&ycy;&chcy;&icy;&scy;&lcy;&yacy;&iecy;&tcy; &ecy;&tcy;&icy; &pcy;&acy;&kcy;-&fcy;&acy;&jcy;&lcy;&ycy;  &quot;prefetch&quot; , &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&yacy; &scy;&lcy;&iecy;&dcy;&ucy;&yucy;&shchcy;&ucy;&yucy; &scy;&tcy;&rcy;&acy;&tcy;&iecy;&gcy;&icy;&yucy;:</span></p> <div> <ol> <li> <p><span data-i18n="97f4c13073e2fdf9ad3fd7f3a956141e430f7ef2fb80371bcc84d5ee862f0173/eb" data-source="Every hour, an &amp;quot;hourly&amp;quot; pack is generated with a given timestamp." onmousemove="i18n(this)">&Kcy;&acy;&zhcy;&dcy;&ycy;&jcy; &chcy;&acy;&scy; &scy;&ocy;&zcy;&dcy;&acy;&iecy;&tcy;&scy;&yacy; &pcy;&acy;&kcy;&iecy;&tcy;  &quot;hourly&quot;  &scy; &zcy;&acy;&dcy;&acy;&ncy;&ncy;&ocy;&jcy; &mcy;&iecy;&tcy;&kcy;&ocy;&jcy; &vcy;&rcy;&iecy;&mcy;&iecy;&ncy;&icy;.</span></p> </li> <li> <p><span data-i18n="cc19fea4ccbbb8ca183c907074fc421ccfd8d42585b3499cd598cb837f80ea41/92" data-source="Nightly, the previous 24 hourly packs are rolled up into a &amp;quot;daily&amp;quot; pack." onmousemove="i18n(this)">&Kcy;&acy;&zhcy;&dcy;&ucy;&yucy; &ncy;&ocy;&chcy;&softcy; &pcy;&rcy;&iecy;&dcy;&ycy;&dcy;&ucy;&shchcy;&icy;&iecy; 24-&chcy;&acy;&scy;&ocy;&vcy;&ycy;&iecy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy; &ocy;&bcy;&hardcy;&iecy;&dcy;&icy;&ncy;&yacy;&yucy;&tcy;&scy;&yacy; &vcy; &pcy;&acy;&kcy;&iecy;&tcy;  &quot;daily&quot; .</span></p> </li> <li> <p><span data-i18n="3155b72a4837cd6a43b135d35bb0679fda6dd5219629327e932bce1ad8ecbe47/63" data-source="Nightly, all prefetch packs more than 30 days old are rolled up into one pack." onmousemove="i18n(this)">&Kcy;&acy;&zhcy;&dcy;&ucy;&yucy; &ncy;&ocy;&chcy;&softcy; &vcy;&scy;&iecy; &pcy;&acy;&kcy;&iecy;&tcy;&ycy; &pcy;&rcy;&iecy;&dcy;&vcy;&acy;&rcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;&jcy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&icy; &scy;&tcy;&acy;&rcy;&shcy;&iecy; 30 &dcy;&ncy;&iecy;&jcy; &ocy;&bcy;&hardcy;&iecy;&dcy;&icy;&ncy;&yacy;&yucy;&tcy;&scy;&yacy; &vcy; &ocy;&dcy;&icy;&ncy; &pcy;&acy;&kcy;&iecy;&tcy;.</span></p> </li> </ol> </div> <p><span data-i18n="4d0e9e067d2ffc1009531977e9e6f031644ec7a1e1b557dd463a07c62f403288/ec" data-source="When a user runs &lt;code&gt;gvfs clone&lt;/code&gt; or &lt;code&gt;scalar clone&lt;/code&gt; against a repo with cache servers, the client requests all prefetch packfiles, which is at most &lt;code&gt;24 + 30 + 1&lt;/code&gt; packfiles downloading only commits and trees. The client then follows with a request to the origin server for the references, and attempts to checkout that tip reference. (There is an extra endpoint that helps get all reachable trees from a given commit, in case that commit was not already in a prefetch packfile.)" onmousemove="i18n(this)">&Kcy;&ocy;&gcy;&dcy;&acy; &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&softcy; &zcy;&acy;&pcy;&ucy;&scy;&kcy;&acy;&iecy;&tcy;  <code>gvfs clone</code>  &icy;&lcy;&icy;  <code>scalar clone</code>  &vcy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&icy; &scy; &kcy;&ecy;&shcy;-&scy;&iecy;&rcy;&vcy;&iecy;&rcy;&acy;&mcy;&icy;, &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &zcy;&acy;&pcy;&rcy;&acy;&shcy;&icy;&vcy;&acy;&iecy;&tcy; &vcy;&scy;&iecy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&iecy; &fcy;&acy;&jcy;&lcy;&ycy; &pcy;&rcy;&iecy;&dcy;&vcy;&acy;&rcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;&jcy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&icy;, &tcy;&ocy; &iecy;&scy;&tcy;&softcy; &mcy;&acy;&kcy;&scy;&icy;&mcy;&ucy;&mcy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&iecy; &fcy;&acy;&jcy;&lcy;&ycy;  <code>24 + 30 + 1</code>  &zcy;&acy;&gcy;&rcy;&ucy;&zhcy;&acy;&yucy;&tcy; &tcy;&ocy;&lcy;&softcy;&kcy;&ocy; &kcy;&ocy;&mcy;&mcy;&icy;&tcy;&ycy; &icy; &dcy;&iecy;&rcy;&iecy;&vcy;&softcy;&yacy;. &Zcy;&acy;&tcy;&iecy;&mcy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy; &ocy;&tcy;&pcy;&rcy;&acy;&vcy;&lcy;&yacy;&iecy;&tcy; &zcy;&acy;&pcy;&rcy;&ocy;&scy; &ncy;&acy; &icy;&scy;&khcy;&ocy;&dcy;&ncy;&ycy;&jcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy; &dcy;&lcy;&yacy; &pcy;&ocy;&lcy;&ucy;&chcy;&iecy;&ncy;&icy;&yacy; &scy;&scy;&ycy;&lcy;&ocy;&kcy; &icy; &pcy;&ycy;&tcy;&acy;&iecy;&tcy;&scy;&yacy; &pcy;&ocy;&lcy;&ucy;&chcy;&icy;&tcy;&softcy; &ecy;&tcy;&ucy; &scy;&scy;&ycy;&lcy;&kcy;&ucy; &ncy;&acy; &pcy;&ocy;&dcy;&scy;&kcy;&acy;&zcy;&kcy;&ucy;. (&Scy;&ucy;&shchcy;&iecy;&scy;&tcy;&vcy;&ucy;&iecy;&tcy; &dcy;&ocy;&pcy;&ocy;&lcy;&ncy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&acy;&yacy; &kcy;&ocy;&ncy;&iecy;&chcy;&ncy;&acy;&yacy; &tcy;&ocy;&chcy;&kcy;&acy;, &kcy;&ocy;&tcy;&ocy;&rcy;&acy;&yacy; &pcy;&ocy;&mcy;&ocy;&gcy;&acy;&iecy;&tcy; &pcy;&ocy;&lcy;&ucy;&chcy;&icy;&tcy;&softcy; &vcy;&scy;&iecy; &dcy;&ocy;&scy;&tcy;&ucy;&pcy;&ncy;&ycy;&iecy; &dcy;&iecy;&rcy;&iecy;&vcy;&softcy;&yacy; &icy;&zcy; &dcy;&acy;&ncy;&ncy;&ocy;&gcy;&ocy; &kcy;&ocy;&mcy;&mcy;&icy;&tcy;&acy;, &iecy;&scy;&lcy;&icy; &ecy;&tcy;&ocy;&tcy; &kcy;&ocy;&mcy;&mcy;&icy;&tcy; &iecy;&shchcy;&iecy; &ncy;&iecy; &bcy;&ycy;&lcy; &vcy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ocy;&mcy; &fcy;&acy;&jcy;&lcy;&iecy; &pcy;&rcy;&iecy;&dcy;&vcy;&acy;&rcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;&jcy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&icy;.)</span></p> <p><span data-i18n="d4ea604206af79dbed59072d9ca1953465a0421d9e97af567c461781b5e1078e/0a" data-source="During a &lt;code&gt;git fetch&lt;/code&gt;, a hook requests the prefetch endpoint using the most-recent timestamp from a previously-downloaded prefetch packfile. Only the list of packfiles with later timestamps are downloaded. Most users fetch hourly, so they get at most one hourly prefetch pack. Users whose machines have been off or otherwise have not fetched in over 30 days might redownload all prefetch packfiles. This is rare." onmousemove="i18n(this)">&Vcy;&ocy; &vcy;&rcy;&iecy;&mcy;&yacy;  <code>git fetch</code>  &pcy;&iecy;&rcy;&iecy;&khcy;&vcy;&acy;&tcy;&chcy;&icy;&kcy; &zcy;&acy;&pcy;&rcy;&acy;&shcy;&icy;&vcy;&acy;&iecy;&tcy; &kcy;&ocy;&ncy;&iecy;&chcy;&ncy;&ucy;&yucy; &tcy;&ocy;&chcy;&kcy;&ucy; &pcy;&rcy;&iecy;&dcy;&vcy;&acy;&rcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;&jcy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&icy;, &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&yacy; &scy;&acy;&mcy;&ucy;&yucy; &pcy;&ocy;&scy;&lcy;&iecy;&dcy;&ncy;&yucy;&yucy; &vcy;&rcy;&iecy;&mcy;&iecy;&ncy;&ncy;&ucy;&yucy; &mcy;&iecy;&tcy;&kcy;&ucy; &icy;&zcy; &rcy;&acy;&ncy;&iecy;&iecy; &zcy;&acy;&gcy;&rcy;&ucy;&zhcy;&iecy;&ncy;&ncy;&ocy;&gcy;&ocy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ocy;&gcy;&ocy; &fcy;&acy;&jcy;&lcy;&acy; &pcy;&rcy;&iecy;&dcy;&vcy;&acy;&rcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;&jcy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&icy;. &Zcy;&acy;&gcy;&rcy;&ucy;&zhcy;&acy;&iecy;&tcy;&scy;&yacy; &tcy;&ocy;&lcy;&softcy;&kcy;&ocy; &scy;&pcy;&icy;&scy;&ocy;&kcy; &pcy;&acy;&kcy;&ocy;&vcy;&ocy;&chcy;&ncy;&ycy;&khcy; &fcy;&acy;&jcy;&lcy;&ocy;&vcy; &scy; &bcy;&ocy;&lcy;&iecy;&iecy; &pcy;&ocy;&zcy;&dcy;&ncy;&icy;&mcy;&icy; &vcy;&rcy;&iecy;&mcy;&iecy;&ncy;&ncy;&ycy;&mcy;&icy; &mcy;&iecy;&tcy;&kcy;&acy;&mcy;&icy;. &Bcy;&ocy;&lcy;&softcy;&shcy;&icy;&ncy;&scy;&tcy;&vcy;&ocy; &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&iecy;&jcy; &pcy;&ocy;&lcy;&ucy;&chcy;&acy;&yucy;&tcy; &dcy;&acy;&ncy;&ncy;&ycy;&iecy; &iecy;&zhcy;&iecy;&chcy;&acy;&scy;&ncy;&ocy;, &pcy;&ocy;&ecy;&tcy;&ocy;&mcy;&ucy; &ocy;&ncy;&icy; &pcy;&ocy;&lcy;&ucy;&chcy;&acy;&yucy;&tcy; &ncy;&iecy; &bcy;&ocy;&lcy;&iecy;&iecy; &ocy;&dcy;&ncy;&ocy;&gcy;&ocy; &pcy;&acy;&kcy;&iecy;&tcy;&acy; &pcy;&rcy;&iecy;&dcy;&vcy;&acy;&rcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;&jcy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&icy; &kcy;&acy;&zhcy;&dcy;&ycy;&jcy; &chcy;&acy;&scy;. &Pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&icy;, &chcy;&softcy;&icy; &kcy;&ocy;&mcy;&pcy;&softcy;&yucy;&tcy;&iecy;&rcy;&ycy; &bcy;&ycy;&lcy;&icy; &vcy;&ycy;&kcy;&lcy;&yucy;&chcy;&iecy;&ncy;&ycy; &icy;&lcy;&icy; &pcy;&ocy; &kcy;&acy;&kcy;&ocy;&jcy;-&lcy;&icy;&bcy;&ocy; &dcy;&rcy;&ucy;&gcy;&ocy;&jcy; &pcy;&rcy;&icy;&chcy;&icy;&ncy;&iecy; &ncy;&iecy; &zcy;&acy;&gcy;&rcy;&ucy;&zhcy;&acy;&lcy;&icy;&scy;&softcy; &vcy; &tcy;&iecy;&chcy;&iecy;&ncy;&icy;&iecy; &bcy;&ocy;&lcy;&iecy;&iecy; 30 &dcy;&ncy;&iecy;&jcy;, &mcy;&ocy;&gcy;&ucy;&tcy; &pcy;&ocy;&vcy;&tcy;&ocy;&rcy;&ncy;&ocy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&icy;&tcy;&softcy; &vcy;&scy;&iecy; &fcy;&acy;&jcy;&lcy;&ycy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &pcy;&rcy;&iecy;&dcy;&vcy;&acy;&rcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;&jcy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&icy;. &Ecy;&tcy;&ocy; &rcy;&iecy;&dcy;&kcy;&ocy;&scy;&tcy;&softcy;.</span></p> <p><span data-i18n="04cc00657817fbeadc00ff81e5632b55def0e918493f94857994e4470de73500/5a" data-source="It is important to note that the clients always contact the origin server for the refs advertisement, so the refs are frequently &amp;quot;ahead&amp;quot; of the prefetched pack data. The missing objects are downloaded on-demand using the &lt;code&gt;GET gvfs/objects/{oid}&lt;/code&gt; requests, when needed by a command such as &lt;code&gt;git checkout&lt;/code&gt; or &lt;code&gt;git log&lt;/code&gt;. Some Git optimizations disable checks that would cause these on-demand downloads to be too aggressive." onmousemove="i18n(this)">&Vcy;&acy;&zhcy;&ncy;&ocy; &ocy;&tcy;&mcy;&iecy;&tcy;&icy;&tcy;&softcy;, &chcy;&tcy;&ocy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&ycy; &vcy;&scy;&iecy;&gcy;&dcy;&acy; &ocy;&bcy;&rcy;&acy;&shchcy;&acy;&yucy;&tcy;&scy;&yacy; &kcy; &icy;&scy;&khcy;&ocy;&dcy;&ncy;&ocy;&mcy;&ucy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ucy; &zcy;&acy; &ocy;&bcy;&hardcy;&yacy;&vcy;&lcy;&iecy;&ncy;&icy;&iecy;&mcy; &scy;&scy;&ycy;&lcy;&ocy;&kcy;, &pcy;&ocy;&ecy;&tcy;&ocy;&mcy;&ucy; &scy;&scy;&ycy;&lcy;&kcy;&icy; &chcy;&acy;&scy;&tcy;&ocy; &pcy;&rcy;&iecy;&dcy;&scy;&tcy;&acy;&vcy;&lcy;&yacy;&yucy;&tcy; &scy;&ocy;&bcy;&ocy;&jcy;  &quot;ahead&quot;  &pcy;&rcy;&iecy;&dcy;&vcy;&acy;&rcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy; &vcy;&ycy;&bcy;&rcy;&acy;&ncy;&ncy;&ycy;&khcy; &dcy;&acy;&ncy;&ncy;&ycy;&khcy; &pcy;&acy;&kcy;&iecy;&tcy;&acy;. &Ncy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&yucy;&shchcy;&icy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy; &zcy;&acy;&gcy;&rcy;&ucy;&zhcy;&acy;&yucy;&tcy;&scy;&yacy; &pcy;&ocy; &tcy;&rcy;&iecy;&bcy;&ocy;&vcy;&acy;&ncy;&icy;&yucy; &scy; &pcy;&ocy;&mcy;&ocy;&shchcy;&softcy;&yucy; &zcy;&acy;&pcy;&rcy;&ocy;&scy;&ocy;&vcy;  <code>GET gvfs/objects/{oid}</code> , &kcy;&ocy;&gcy;&dcy;&acy; &ecy;&tcy;&ocy; &ncy;&iecy;&ocy;&bcy;&khcy;&ocy;&dcy;&icy;&mcy;&ocy; &tcy;&acy;&kcy;&ocy;&jcy; &kcy;&ocy;&mcy;&acy;&ncy;&dcy;&ocy;&jcy;, &kcy;&acy;&kcy;  <code>git checkout</code>  &icy;&lcy;&icy;  <code>git log</code> . &Ncy;&iecy;&kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&iecy; &ocy;&pcy;&tcy;&icy;&mcy;&icy;&zcy;&acy;&tscy;&icy;&icy;  Git  &ocy;&tcy;&kcy;&lcy;&yucy;&chcy;&acy;&yucy;&tcy; &pcy;&rcy;&ocy;&vcy;&iecy;&rcy;&kcy;&icy;, &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&iecy; &mcy;&ocy;&gcy;&ucy;&tcy; &pcy;&rcy;&icy;&vcy;&iecy;&scy;&tcy;&icy; &kcy; &scy;&lcy;&icy;&shcy;&kcy;&ocy;&mcy; &acy;&gcy;&rcy;&iecy;&scy;&scy;&icy;&vcy;&ncy;&ocy;&jcy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&iecy; &pcy;&ocy; &tcy;&rcy;&iecy;&bcy;&ocy;&vcy;&acy;&ncy;&icy;&yucy;.</span></p> </div> <h2 class="text-body-emphasis"  id="_see_also"><span data-i18n="2fa97693b70fa87b95b2d1bdf9558e4ac65d5e82d145f13a03849c4d9c4957a9/40" data-source="See also" onmousemove="i18n(this)">See also</span></h2> <div> <p><span data-i18n="8a188bac404cdc620f919eaf85558bc38428c8de9a5dd0b9bd16969ea53b3f9a/9e" data-source="[1] &lt;a href=&quot;https://lore.kernel.org/git/RFC-cover-00.13-0000000000-20210805T150534Z-avarab@gmail.com/&quot;&gt;https://lore.kernel.org/git/RFC-cover-00.13-0000000000-20210805T150534Z-avarab@gmail.com/&lt;/a&gt; An earlier RFC for a bundle URI feature." onmousemove="i18n(this)">[1]  <a href="https://lore.kernel.org/git/RFC-cover-00.13-0000000000-20210805T150534Z-avarab@gmail.com/">https://lore.kernel.org/git/<span class="__cf_email__" data-cfemail="d3819590feb0bca5b6a1fee3e3fde2e0fee3e3e3e3e3e3e3e3e3e3fee1e3e1e2e3ebe3e687e2e6e3e6e0e789feb2a5b2a1b2b193b4beb2babffdb0bcbe">[email&#160;protected]</span>/</a>  &Bcy;&ocy;&lcy;&iecy;&iecy; &rcy;&acy;&ncy;&ncy;&icy;&jcy; RFC &dcy;&lcy;&yacy; &fcy;&ucy;&ncy;&kcy;&tscy;&icy;&icy; URI &pcy;&acy;&kcy;&iecy;&tcy;&acy;.</span></p> <p><span data-i18n="4c628314aa058a9cd6a40fbb133024d85919f9ab44bf9608156c75b305019234/37" data-source="[2] &lt;a href=&quot;https://github.com/microsoft/VFSForGit/blob/master/Protocol.md&quot;&gt;https://github.com/microsoft/VFSForGit/blob/master/Protocol.md&lt;/a&gt; The GVFS Protocol" onmousemove="i18n(this)">[2]  <a href="https://github.com/microsoft/VFSForGit/blob/master/Protocol.md">https://github.com/microsoft/VFSForGit/blob/master/Protocol.md</a>  &Pcy;&rcy;&ocy;&tcy;&ocy;&kcy;&ocy;&lcy; GVFS.</span></p> </div><address>
<p>
    &copy; 2012&ndash;2024 Scott Chacon and others<br/>Licensed under the MIT License.<br/>
<a href="https://git-scm.com/docs/bundle-uri">https://git-scm.com/docs/bundle-uri</a>
</p>
</address>                </article>
            </main>

            <br>
            <br>
            <hr>

                            <ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-6424571640879890"
     data-ad-slot="3954319254"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script data-cfasync="false" src="../../../cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>            
        </div>

        <!-- -->

        <div class="col-md-3">
            <br>
            <form action="-index-.html">
                <div class="input-group">
                    <input class="form-control" type="search" name="q" placeholder="Search for Git" required>
                    <button class="btn btn-primary" type="submit">
                        <i class="bi bi-search"></i>
                    </button>
                </div>
            </form>
            <br>

                            <div class="list-group list-group-flush">
                                            <a class="list-group-item list-group-item-action text-primary-emphasis px-2 text-truncate" href="git.html">
                            git                        </a>
                                            <a class="list-group-item list-group-item-action text-primary-emphasis px-2 text-truncate" href="git-add.html">
                            git add                        </a>
                                            <a class="list-group-item list-group-item-action text-primary-emphasis px-2 text-truncate" href="git-am.html">
                            git am                        </a>
                                            <a class="list-group-item list-group-item-action text-primary-emphasis px-2 text-truncate" href="git-annotate.html">
                            git annotate                        </a>
                                            <a class="list-group-item list-group-item-action text-primary-emphasis px-2 text-truncate" href="git-apply.html">
                            git apply                        </a>
                                            <a class="list-group-item list-group-item-action text-primary-emphasis px-2 text-truncate" href="git-archimport.html">
                            git archimport                        </a>
                                            <a class="list-group-item list-group-item-action text-primary-emphasis px-2 text-truncate" href="git-archive.html">
                            git archive                        </a>
                                    </div>
            
            <br>
            <div class="my-3">
                   <ins class="adsbygoogle"
        style="display:block; text-align:center;"
        data-ad-layout="in-article"
        data-ad-format="fluid"
        data-ad-client="ca-pub-6424571640879890"
        data-ad-slot="3777011170"></ins>
<script>
    (adsbygoogle = window.adsbygoogle || []).push({});
</script>            </div>
            <br>

            
            
        </div>
    </div>
</div>    <!--/sse-->

    <footer>
        <br>
        <div class="container">
            <div class="row">
                <div class="col">
                    <hr>
                    <div class="row">
                        <div class="col-md-10">
                            <ul class="nav">
                                <li class="nav-item">
                                    <a class="nav-link ps-0" href="https://runebook.dev/">Help us Improve Translation</a>
                                </li>
                                                            </ul>
                        </div>
                        <div class="col-md-2 text-end">
                            <a href="bundle-uri.html#" class="fs-5" aria-label="Top">
                                <i class="bi bi-arrow-up-square-fill"></i>
                            </a>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <br>
    </footer>
    <script src="../../../runebook.js"></script>
</body>

</html>